On Thursday, September 20, 2012 4:06:15 AM UTC-5, Jones wrote:
>
> Hi folks,
>
> has my puppet nuts?
>
> It worked perfectly. It's too bad that we don't have monday... that would 
> explain everything :D
>
> example:
>
> *sshd_config{*
> *                "PermitRootLogin": value => "no",*
> *                notify => Service['ssh'],*
> *        }*
>
>
> Am I stupid?
>
>
Unlikely.

I take it that catalog compilation fails with a message such as the  
subject of this thread?  That would indicate that no declaration of 
Service['ssh'] has yet been parsed at the point where the implicated code 
is being parsed.  There are two basic possibilities:

   1. Service['ssh'] is in fact not declared anywhere for the affected 
   node.  Perhaps conditional statements inadvertently prevent such a 
   declaration, or inadvertently trigger the sshd_config declaration on a node 
   that shouldn't have it.
   2. Service['ssh'] is declared for the affected node, but that 
   declaration has not yet been parsed.  Application-order relationships such 
   as those declared via the 'notify' metaparameter do not affect parse order 
   (and indeed they can't, because there's no reliable way to predict which 
   manifest contains any given declaration).

Your problem is most likely in category (2).  Note that even if you don't 
modify the classes containing your ssh declarations, the order in which 
they are parsed can be affected by changes elsewhere.

I can't make much in the way of specific suggestions without actual code 
(what you posted is both incomplete and invalid), but there are really only 
two ways to control parse order:

   1. Declarations in the same scope (class, node, or global) are parsed in 
   the order they are written
   2. The 'include' (or 'require') function, or a parametrized-style class 
   declaration, ensures that the named class has been parsed before any 
   declarations appearing later in the same scope

Generally speaking, you should avoid parametrizing your classes, and use 
'include' at the beginning of each class's body to declare its 
dependencies.  'Include'ing the same class multiple times (i.e. from 
different classes) is not a problem so long as the class is not 
parametrized.

For resources in the same class, just be sure to declare each resource 
after the declarations of all other resources on which it depends.


John

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/puppet-users/-/ez-_RqvmZ3IJ.
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