chakkerz wrote:
> Hello there
> 
> I'm having a problem (again). At my site we are maintaining RHEL,
> CentOS and Solaris hosts, with in the future possibly some FreeBSD
> also being added into the mix. To this end instead of constantly
> branching whenever running a command on the console (or remembering
> where it is located), I've set all the commands we need so far up in
> the default node:
> 
> class defaultnode
> {
>         if ($httpd_group == "")
>         {
>                 $httpd_group = "root"
>         }
> 
>         case $operatingsystem
>         {
>                 centos, redhat:
>                 {
>                         $cat_cmd        = "/bin/cat"
>                         $chkconfig_cmd  = "/sbin/chkconfig"
>                         $chown_cmd      = "/bin/chown"
>                         $chmod_cmd      = "/bin/chmod"
>                         $echo_cmd       = "/bin/echo"
>                         $grep_cmd       = "/bin/grep"
>                         $ln_cmd         = "/bin/ln"
>                         $ls_cmd         = "/bin/ls"
>                         $mailx_cmd      = "/bin/mailx"
>                         $newaliases_cmd = "/usr/bin/newaliases"
>                         $rm_cmd         = "/bin/rm"
>                         $sed_cmd        = "/bin/sed"
>                         $tar_cmd        = "/bin/tar"
>                         $touch_cmd      = "/bin/touch"
>                         $wget_cmd       = "/usr/bin/wget"
> 
>                         include redhat-default
>                 }
>                 solaris:
>                 {
>                         $cat_cmd        = "/usr/bin/cat"
>                         $chown_cmd      = "/usr/bin/chown"
>                         $chmod_cmd      = "/usr/bin/chmod"
>                         $echo_cmd       = "/usr/bin/echo"
>                         $grep_cmd       = "/usr/bin/grep"
>                         $mailx_cmd      = "/usr/bin/mailx"
>                         $newaliases_cmd = "/usr/sbin/newaliases"
>                         $rm_cmd         = "/usr/bin/rm"
>                         $tar_cmd        = "/usr/sfw/bin/gtar"
> 
>                         include solaris-default
>                 }
>                 default:
>                 {
>                         include shared-default
>                 }
>         }
> }
> 
> which is called by all nodes, eg:
> 
> node "testnode.example.org"
> {
>         include defaultnode
> 
>         exec
>         { "$chkconfig_cmd snmpd on && $touch_cmd /tmp/
> snmpd_chkconfig.USG":
>                 cwd => "/",
>                 creates => "/tmp/snmpd_chkconfig.USG",
>         }
> 
> }
> 
> But when i run puppet the variables aren't defined:
> err: Could not create  snmpd on &&  /tmp/snmpd_chkconfig.USG: ' snmpd
> on &&  /tmp/snmpd_chkconfig.USG' is both unqualifed and specified no
> search path at /etc/puppet/manifests/nodes/testnode.node:9
> warning: Not using cache on failed catalog
> warning: Configuration could not be instantiated: ' snmpd on &&  /tmp/
> snmpd_chkconfig.USG' is both unqualifed and specified no search path
> at /etc/puppet/manifests/nodes/testnode.node:9

Variables don't escape their scope. Use the search() function to add 
"defaultnode" to the serachpath or reference the variables directly with 
$defaultnode::chkconfig_cmd or "${defaultnode::chkconfig_cmd}". See the 
LanguageTutorial on the wiki for details (section "Variables"[1]).



Regards, DavidS

[1] http://reductivelabs.com/trac/puppet/wiki/LanguageTutorial#variables


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

Reply via email to