Hi all,

I've been testing something today that I can't get to play ball the
way I'd like. Here's the setup:

site.pp
import "nodes"
$extlookup_datadir = "/etc/puppet/envs/poc/extdata"
$extlookup_precedence = ["%{fqdn}", "common"]

nodes.pp
class core {
    include hostinfo
    include motd
}

hostinfo module, init.pp
class hostinfo {
    $os     = extlookup("os")
    $region = extlookup("region")
}

module motd, init.pp
class motd  {
    include "motd::$operatingsystem"
}

class motd::common {
    file { "/etc/motd":
        owner => root, group => sys, mode => 0644,
        content => template("motd/motd.erb"),
    }
}

module motd, redhat.pp
class motd::redhat inherits motd::common {}

External data CSV:
testhost:extdata$ egrep '^(os|region)' testhost.domain.com.csv
os,core-redhat-5.5.1.19-11-10.x86_64
region,eu

Originally the hostinfo module was laid out in the same way we do all
the modules, i.e. init.pp has parent class which 'includes' class::
$operatingsystem and a class::common {} , then $operatingsystem.pp has
'class blah::redhat inherits blah::common'. But in the early part of
the problem I realised the OS layout for 'hostinfo' was bogus, and
dropped it for simplification.

$os and $region were constantly failing to be found, but if I took the
extlookup statements and copy n' pasted, verbatim, into the motd
module itself, it worked. So then I tried a run stage to see if I
could ensure hostinfo was imported before anything else. This was
placed in site.pp:

stage { "initialise": before => Stage[main] }
class { "hostinfo": stage => "initialise"; }

This is the first time I've messed with run stages, so I'm not 100% I
got that right. It ran, and with puppet master --no-daemonize --debug
I could see it being imported. So that was a good start in my mind.
$os and $region still failed to be found though.

So, I cut hostinfo out of nodes.pp, and put 'inherits hostinfo' into
'class motd'; this worked fine, the variables were found as I'd like.

How come it doesn't work with run stages, or includes? Am I missing
something fundamental here?

Thanks

--Mark

-- 
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