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.

Reply via email to