Chris
2009-May-18 15:04 UTC
[Puppet Users] How does ''require Class'' differ from ''include'' ?
Hi all, Prompted by Evan''s question about requiring classes between modules; I wonder if someone could clarify my understanding of how this works: If I have Class a { some_resource{x:} some_resource{y:} } Class b { some_resource{z: require Class[a] } } Does this mean that puppet will ensure that some_resource{x:} and some_resource{y:} have been successfully applied before it tries to apply some_resource{z:} ? Or is it equivalent to doing "include a" i.e. all the resources are applied, but in no particular order ? Thanks! Chris --~--~---------~--~----~------------~-------~--~----~ 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+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---
Luke Kanies
2009-May-20 16:09 UTC
[Puppet Users] Re: How does ''require Class'' differ from ''include'' ?
On May 18, 2009, at 10:04 AM, Chris wrote:> > Hi all, > > Prompted by Evan''s question about requiring classes between modules; I > wonder if someone could clarify my understanding of how this works: If > I have > > Class a { > some_resource{x:} > some_resource{y:} > } > > Class b { > some_resource{z: > require Class[a] > } > } > > Does this mean that puppet will ensure that some_resource{x:} and > some_resource{y:} have been successfully applied before it tries to > apply some_resource{z:} ? Or is it equivalent to doing "include a" > i.e. all the resources are applied, but in no particular order ?The former is correct - class dependencies ensure that all resources in the required class are applied before *any* resources in the requiring class. 0.25 has a ''require'' function that behaves like include + class require. -- Never interrupt your enemy when he is making a mistake. --Napolean Bonaparte --------------------------------------------------------------------- Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~---------~--~----~------------~-------~--~----~ 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+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---
Chris
2009-May-20 17:01 UTC
[Puppet Users] Re: How does ''require Class'' differ from ''include'' ?
Brilliant, thanks Luke. Just for the benefit of any future google-searchers, here''s a fixed version of my previous pseudocode that actually works, and demonstrates this behaviour. A combination include+require function, as per 0.25, will neaten this up nicely. class a { # no guarantee as to which of these is created first file{"/tmp/x":ensure=>present} file{"/tmp/y":ensure=>present} } class b { include a # /tmp/x and /tmp/y are guaranteed to exist before /tmp/z file{"/tmp/z": ensure=>present, require=> Class["a"] } } node my_pc { include b } On May 20, 5:09 pm, Luke Kanies <l...@madstop.com> wrote:> On May 18, 2009, at 10:04 AM, Chris wrote: > > > > > > > Hi all, > > > Prompted by Evan''s question about requiring classes between modules; I > > wonder if someone could clarify my understanding of how this works: If > > I have > > > Class a { > > some_resource{x:} > > some_resource{y:} > > } > > > Class b { > > some_resource{z: > > require Class[a] > > } > > } > > > Does this mean that puppet will ensure that some_resource{x:} and > > some_resource{y:} have been successfully applied before it tries to > > apply some_resource{z:} ? Or is it equivalent to doing "include a" > > i.e. all the resources are applied, but in no particular order ? > > The former is correct - class dependencies ensure that all resources > in the required class are applied before *any* resources in the > requiring class. > > 0.25 has a ''require'' function that behaves like include + class require. > > -- > Never interrupt your enemy when he is making a mistake. > --Napolean Bonaparte > --------------------------------------------------------------------- > Luke Kanies |http://reductivelabs.com|http://madstop.com--~--~---------~--~----~------------~-------~--~----~ 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+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---