On Monday, July 1, 2013 9:17:11 PM UTC-5, Daniel Jung wrote:
>
> Hi Wolf,
>
> I guess you can use the lookupvar and specifically call the variable from 
> the class where it belongs to. That would be one method of doing it and 
> probably works with Puppet 3.* as well. 
> I just want to get my head around the scope while calling templates from a 
> manifest. 
>
>
Yes, you can use scope.lookupvar() to retrieve the value of a variable of 
any class by passing the qualified name of the variable.  And that is what 
your templates *should* do if they need to query variables from outside the 
local scope where they are evaluated.  This works in Puppet 2 and Puppet 3.

Before dynamic scoping was removed (i.e. before Puppet 3), a template 
might, under some circumstances, be able to directly access variables 
belonging to other scopes, such as in your example code.  That was never a 
good idea, however, for exactly the same reasons that dynamic scoping in 
general was not a good idea.

The potential gotcha with looking up variables of other classes is that you 
must make sure that a declaration of the host class has already been parsed 
before the template is evaluated.  That's not necessarily a big problem, 
but you can expect to be bitten in the behind if you forget to do it.


John


John

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To post to this group, send email to puppet-users@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to