Hmm, I just thought of this. Normally when referencing an instance of a define you would use this syntax (note the caps):
Foo::Do_stuff['name'] Did you try: Foo::Do_stuff['name']::var1 On Tue, Dec 27, 2011 at 1:37 PM, Aaron Grewell <aaron.grew...@gmail.com> wrote: > Yeah, I'd file a bug against that. There may be other considerations, > but unless there's a really good reason for the current behavior I > would expect it to throw an error. > > On Tue, Dec 27, 2011 at 1:24 PM, Trevor Vaughan <tvaug...@onyxpoint.com> > wrote: >> In that case, it should probably just fail instead of working (and >> yes, it works). >> >> Trevor >> >> On Tue, Dec 27, 2011 at 4:01 PM, Aaron Grewell <aaron.grew...@gmail.com> >> wrote: >>> If you were actually passing the variable, yes. But you're not, you're >>> expecting to reach into a non-class (essentially a grab-bag of resources) >>> and extract data as though it were a class. It isn't and AFAIK you can't. >>> You'll have to put the data in an actual class and address it from there. >>> >>> On Dec 27, 2011 11:21 AM, "Trevor Vaughan" <tvaug...@onyxpoint.com> wrote: >>>> >>>> There are actually pretty good reasons for doing it if you have a >>>> fully modular setup. >>>> >>>> For example: >>>> >>>> Web Server module define -> Firewall code define -> ERB using higher >>>> level variables. >>>> >>>> There's no reason to stuff everything into a big data store when you >>>> can easily pass it down. *But* if you try to use the top level >>>> variable in the second define call ERB, then you've got issues. >>>> >>>> I feel that this needs to be either forbidden (break the compile) or >>>> allowed. But we'd need to know how to allow it. >>>> >>>> Trevor >>>> >>>> On Tue, Dec 27, 2011 at 11:40 AM, Aaron Grewell <aaron.grew...@gmail.com> >>>> wrote: >>>> > It's an interesting question, but I wouldn't want to structure my >>>> > modules that way. There are two methods of getting data into a define >>>> > that are guaranteed to work: passing variables and file retrieval >>>> > (extlookup/hiera). Especially given the changes being made to scoping >>>> > anything else is fraught with peril. >>>> > >>>> > On Mon, Dec 26, 2011 at 5:56 AM, Trevor Vaughan <tvaug...@onyxpoint.com> >>>> > wrote: >>>> >> I just ran into an interesting scenario where I didn't know how to >>>> >> scope my variables and I'd just like to share for the crowd. >>>> >> >>>> >> Suppose you have two modules 'foo' and 'bar'. You also have two >>>> >> defines, 'foo::do_stuff' and 'bar::more_stuff'. >>>> >> >>>> >> define foo::do_stuff ( >>>> >> $var1 = 'a', >>>> >> $var2 = 'b' >>>> >> ) { >>>> >> bar::more_stuff { 'test': } >>>> >> } >>>> >> >>>> >> define bar::more_stuff ( >>>> >> $optional_var = 'ignore' >>>> >> ) { >>>> >> file { '/tmp/test': >>>> >> content => template('bar/random.erb') >>>> >> } >>>> >> >>>> >> +++ random.erb +++ >>>> >> >>>> >> var1 = <%= var1 %> >>>> >> var2 = <%= var2 %> >>>> >> >>>> >> So, here, puppet complains about the scope of var1 and var2 but what >>>> >> should the correct scope be? foo::do_stuff::var1, etc...? But how does >>>> >> that work with multiple define calls to foo::do_stuff? >>>> >> >>>> >> This, of course, can be avoided by putting the template under >>>> >> foo/templates and forcing the passage of content to bar::more_stuff >>>> >> but I'm not quite sure *why* this isn't supposed to work and what to >>>> >> do about it with the notice that 2.8 will force the scoping of all >>>> >> variables. >>>> >> >>>> >> Thanks, >>>> >> >>>> >> Trevor >>>> >> >>>> >> -- >>>> >> Trevor Vaughan >>>> >> Vice President, Onyx Point, Inc >>>> >> (410) 541-6699 >>>> >> tvaug...@onyxpoint.com >>>> >> >>>> >> -- This account not approved for unencrypted proprietary information -- >>>> >> >>>> >> -- >>>> >> 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+unsubscr...@googlegroups.com. >>>> >> For more options, visit this group at >>>> >> http://groups.google.com/group/puppet-users?hl=en. >>>> >> >>>> > >>>> > -- >>>> > 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+unsubscr...@googlegroups.com. >>>> > For more options, visit this group at >>>> > http://groups.google.com/group/puppet-users?hl=en. >>>> > >>>> >>>> >>>> >>>> -- >>>> Trevor Vaughan >>>> Vice President, Onyx Point, Inc >>>> (410) 541-6699 >>>> tvaug...@onyxpoint.com >>>> >>>> -- This account not approved for unencrypted proprietary information -- >>>> >>>> -- >>>> 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+unsubscr...@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/puppet-users?hl=en. >>>> >>> -- >>> 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+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/puppet-users?hl=en. >> >> >> >> -- >> Trevor Vaughan >> Vice President, Onyx Point, Inc >> (410) 541-6699 >> tvaug...@onyxpoint.com >> >> -- This account not approved for unencrypted proprietary information -- >> >> -- >> 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+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/puppet-users?hl=en. >> -- 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+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.