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
[email protected]

-- 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 [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