Dear all, I have a class where I declare one file and many execs with create_resources: class module::yeah { file {"myfile"} $hash = parseyaml(inline_template(''hereigeneratemynicehash.to_yaml'')) create_resources (''exec'', $hash) } And I need to create a dependency of the kind inside that class: File["myfile"] -> Exec[*] I have tried setting "require" => File[''myfile''] inside my template, but File is not recognized inside the template. And if I quote it, Puppet does not recognize it as a File resource. Do you guys see a way how I can create the dependency? Thanks! Pablo -- 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.
On Apr 5, 4:47 am, Pablo Fernandez <pablo.fernan...@cscs.ch> wrote:> Dear all, > > I have a class where I declare one file and many execs with > create_resources: > > class module::yeah { > file {"myfile"} > $hash = parseyaml(inline_template(''hereigeneratemynicehash.to_yaml'')) > create_resources (''exec'', $hash) > > } > > And I need to create a dependency of the kind inside that class: > File["myfile"] -> Exec[*] > > I have tried setting "require" => File[''myfile''] inside my template, but > File is not recognized inside the template. And if I quote it, Puppet > does not recognize it as a File resource. > > Do you guys see a way how I can create the dependency?I see at least two possibilities: 1) Use resource chaining and tag-selected collections: 1a) either automatic tags: File["myfile"] -> Exec<| tag ''module::yeah'' |> 1b) or manual tags: File["myfile"] -> Exec<| tag = ''tag-I-explicitly- declared-via-my-hash'' |> 2) Use resource defaults: class module::yeah { file { ''myfile'': } # I think this is scoped to the class: Exec { require => File[''myfile''] } $hash parseyaml(inline_template(''hereigeneratemynicehash.to_yaml'')) create_resources (''exec'', $hash) } Test these, of course. I am uncertain whether create_resources() has different semantics in these cases than would ordinary resource declarations. John -- 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.
Pablo Fernandez
2012-Apr-05 13:14 UTC
Re: [Puppet Users] Re: multiple resources dependencies
Hi John, I like option 2) very much, but 1) opens new doors too :) A small extract from the manual, just for clarification: " Defaults are not global — they only affect the current scope and scopes below the current one. If you want a default setting to affect your entire configuration, your only choice currently is to specify them outside of any class. " I''ve tested it, and it seems to work fine. Thanks! BR/Pablo On 04/05/2012 03:01 PM, jcbollinger wrote:> > On Apr 5, 4:47 am, Pablo Fernandez<pablo.fernan...@cscs.ch> wrote: >> Dear all, >> >> I have a class where I declare one file and many execs with >> create_resources: >> >> class module::yeah { >> file {"myfile"} >> $hash = parseyaml(inline_template(''hereigeneratemynicehash.to_yaml'')) >> create_resources (''exec'', $hash) >> >> } >> >> And I need to create a dependency of the kind inside that class: >> File["myfile"] -> Exec[*] >> >> I have tried setting "require" => File[''myfile''] inside my template, but >> File is not recognized inside the template. And if I quote it, Puppet >> does not recognize it as a File resource. >> >> Do you guys see a way how I can create the dependency? > > I see at least two possibilities: > > 1) Use resource chaining and tag-selected collections: > 1a) either automatic tags: File["myfile"] -> Exec<| tag > ''module::yeah'' |> > 1b) or manual tags: File["myfile"] -> Exec<| tag = ''tag-I-explicitly- > declared-via-my-hash'' |> > > 2) Use resource defaults: > class module::yeah { > file { ''myfile'': } > > # I think this is scoped to the class: > Exec { require => File[''myfile''] } > > $hash > parseyaml(inline_template(''hereigeneratemynicehash.to_yaml'')) > create_resources (''exec'', $hash) > } > > > Test these, of course. I am uncertain whether create_resources() has > different semantics in these cases than would ordinary resource > declarations. > > > John >-- 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.