Thank you for your answer Nan, 

Indeed, *"anchor"* from *stdlib* is the solution to the *"global class 
container" ordering issue* in puppet 2.6.

I finally found it myself but thanks for the answer and the confirmation.

https://github.com/puppetlabs/puppetlabs-stdlib/blob/master/lib/puppet/type/anchor.rb

With this syntax : 

class a {
*  anchor {'a::begin' : }*
 * -> *class {'a::params' : }
  -> class {'a::install' : }
  -> class {'a::config' : }
  -> class {'a::service' : }
*  -> anchor {'a::end' : }*
}

Macro ordering works : 

class myClass { 
*  class {'a': *
     ... 
  } 
*  -> *
  class {'b':} 
 
} 


But it is not very easy to find... maybe a reference into the official doc 
of puppet labs http://docs.puppetlabs.com/learning/ordering.html should be 
added ...

Still, thank you Nan !



Le vendredi 3 août 2012 17:38:28 UTC+2, Nan Liu a écrit :
>
> On Fri, Aug 3, 2012 at 8:15 AM, xkrantz <[email protected]> wrote: 
> > Hi every one, 
> > 
> > First, I'm really sorry if this topic has already been discussed over 
> and over again but it is not so easy to parse and search the web about 
> this, according to the different versions of puppet. 
> > 
> > 
> > 
> > So, I'm using Puppet 2.6.2 that ships with Debian Squeeze. 
> > (We are not yet ready for puppet 2.7.x). 
> > 
> > 
> > 
> > I'm trying to order classes due to depencies issue and I'am assuming 
> that ordering is recursive (Every thing in class b won't be done before 
> class a) 
> > 
> > 
> > So I'have tried several syntaxes but in any case, it fails : 
> > 
> > 
> > Syntax 1 
> > ========= 
> > 
> > class myClass { 
> > 
> >   class {'a': 
> >      ... 
> >   } 
> >   -> 
> >   class {'b':} 
> > 
> > } 
> > 
> > 
> > Syntax 2 
> > ========= 
> > 
> > class myClass { 
> > 
> >   ## Ordering 
> >   Class['a'] -> Class['b'] 
> > 
> >   ## Declaring 
> >   class {'a': 
> >      ... 
> >   } 
> > 
> >   class {'b':} 
> > 
> > } 
> > 
> > Syntax 3 
> > ========= 
> > 
> > class myClass { 
> > 
> >   class {'a': 
> >      ... 
> >   } 
> > 
> >   ## Use metaparameter 
> >   class {'b': 
> >     require => Class['a'], 
> >   } 
> > 
> > } 
> > 
> > 
> > 
> > In every cases, when the client is applying the catalog, resources / 
> types from  (or included in) class 'b' are realized before these from class 
> 'a'... 
> > 
> > And Yes, I'have checked that none of the resources in class 'b' require 
> one of class 'a'. 
> > 
> > 
> > 
> > So is it possible ? Do I have to upgrade my Puppet master ? 
>
> The syntax is correct, and if your classes only contain resources it 
> should work, otherwise it's a bug. There's a class containment issue 
> and anchors in stdlib have been the way to get around it until some 
> definitive solution comes up. This ticket describes this pretty well 
> with some examples: http://projects.puppetlabs.com/issues/8040 
>
> Nan 
>

-- 
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/-/mcgONMmeK4gJ.
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