I'm really digging hiera, but I have a problem that I just can't seem
to work out:

I am working on a puppet module, and I have two classes: puppet::agent
and puppet::master.  The layout of the classes are very similar, but
hiera can only successfully find my variables in one of them.

$confdir/environments/development/
        hieradata/
            common.json
            modules.json
        modules/
               puppet/
                     manifests/
                         init.pp
                         data.pp
                         agent.pp
                         master.pp
                         agent/
                             data.pp
                         master/
                             data.pp
        nodes/
        site.pp


agent.pp:

--------------
class puppet::agent(
  $bindir           = hiera('puppet_agent_bindir'),
  $confdir         = hiera('puppet_agent_confdir'),
  $configfile      = hiera('puppet_agent_configfile'),
  ...
) {
   ...
}
---------------------

agent/data.pp

-------------------
class puppet::agent::data {
  $puppet_agent_bindir         = '/usr/bin'
  $puppet_agent_confdir        = '/etc/puppet'
  $puppet_agent_configfile     = 'puppet.conf'
 ...
}
----------------

When I include puppet::agent, the manifest compiles fine, finds the
default values in agent/data.pp, and all is well.  The master
configuration is the same:


master.pp

--------------
class puppet::master(
  $confdir           = hiera('puppet_master_confdir'),
  $bindir             = hiera('puppet_master_bindir'),
  $configfile        = hiera('puppet_master_configfile'),
  ...
) {
   ...
}
-----------------------

master/data.pp

----------------------
class puppet::master::data {
  $puppet_master_confdir           = '/etc/puppet'
  $puppet_master_bindir            = '/usr/bin'
  $puppet_master_configfile        = 'puppet.conf'
  ...
}
---------------------------

But when I include puppet::master, the catalog fails to compile,
because hiera cannot find the values:

-----------------
Could not find data item puppet_master_confdir in any Hiera data file
and no default supplied at
/etc/puppet/environments/development/modules/puppet/manifests/master.pp:71
on node foo.bar.org
-----------------

When generating the catalog for the agent, I see this in the puppet output:

-----------------
debug: hiera(): Hiera Puppet backend starting
debug: hiera(): Looking up puppet_agent_bindir in Puppet backend
debug: hiera(): Looking for data in data::nodes/foo
debug: importing
'/etc/puppet/environments/development/modules/puppet/manifests/agent/data.pp'
in environment development
debug: importing
'/etc/puppet/environments/development/modules/puppet/manifests/data.pp'
in environment development
debug: hiera(): Looking for data in data::modules-rh
debug: hiera(): Looking for data in data::modules
debug: hiera(): Looking for data in data::common
debug: hiera(): Looking for data in puppet::agent::data
debug: hiera(): Found data in class puppet::agent::data
------------------

The same section of output looks the same when compiling the master,
only the very last line is missing. Does that mean that the puppet
backend cannot parse the master/data.pp file?  I've stared at it until
my eyes crossed, and I don't see anything wrong.  I am going to
simplify my classes and see what I come up with, but I am pretty
baffled at this point.


Thanks for any help,
    Chad

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to