Sorry, that should be

$puppetserver = $puppet::params::puppetserver

-Eric  

--  

Eric Shamow
Professional Services
http://puppetlabs.com/
©631.871.6441

Join us for PuppetConf 2012 at the Mission Bay Convention Center in San 
Francisco, California on September 27th and 28th --> http://bit.ly/pcsig12   


On Saturday, August 11, 2012 at 10:36 PM, Eric Shamow wrote:

> The best reference to explain how variable scoping works in Puppet is this 
> one -
>  
> http://docs.puppetlabs.com/guides/scope_and_puppet.html
>  
> Scoping has changed with 2.7, so you may find some confusing references 
> online that follow the pre-2.7 rules. In general the 2.7 changes are designed 
> to introduce some sanity to variable scopes and eliminate dynamic scoping, 
> which causes all kinds of pain.
>  
> The easiest way to think about scoping in general is that a scope is defined 
> by its container. If I put something physical in a box, I have access to it 
> the moment I open the box, and other objects inside the box can interact with 
> it. If, however, I now put that box inside a second box, the objects in the 
> second box cannot interact directly with the objects in the first - the first 
> object is protected by its container.
>  
> Scoping mostly works the same way. The right way to get at the variable is to 
> always explicitly scope, as you began to get at below with your 
> scope.lookupvar example. As that can be a bit of a pain to repeat, you can 
> always copy the value into a local variable:
>  
> class puppet::config {
> include puppet::params
> $puppetserver = puppet::params::puppetserver
> …
> }
>  
> -Eric  
>  
> --  
>  
> Eric Shamow
> Professional Services
> http://puppetlabs.com/
> ©631.871.6441
>  
> Join us for PuppetConf 2012 at the Mission Bay Convention Center in San 
> Francisco, California on September 27th and 28th --> http://bit.ly/pcsig12  
>  
>  
> On Saturday, August 11, 2012 at 8:45 PM, Zachary Stern wrote:
>  
> > I'm having a really hard time grasping how variables are scoped in
> > puppet (not really much of a programmer).
> >  
> > I've got a manifest that looks like this:
> > ###
> > class puppet::config {
> > include puppet::params
> > file { '/etc/puppet/puppet.conf':
> > ensure => present,
> > content => template('puppet/puppet.conf.erb'),
> > owner => 'root',
> > group => 'admins',
> > require => Class['puppet::install'],
> > notify => Class['puppet::service'],
> > }
> > }
> > ###
> >  
> >  
> > I've then got a manifest like this, which has a class being included above:
> > ###
> > class puppet::params {
> > $puppetserver = 'command.enterawesome.com (http://command.enterawesome.com)'
> > }
> > ###
> >  
> > The template being used in the first class includes the variable
> > $puppetserver, but somehow, the include statement isn't enough for the
> > variable to be defined within the scope of the manifest/template
> > above.
> > What gives?
> > It works just fine if I include a statement like this in the erb file:
> > <%= scope.lookupvar('puppet::params::puppetserver') %>
> >  
> > But I'd really like to understand scoping better. What is it I need to
> > do to just refer to the variable by name? Why isn't the include
> > statement enough? Isn't in including the puppet::params class inside
> > the puppet::config class, and therefore having the variable defined in
> > that context? Apparently not. But I don't understand why. I wan't to
> > end up at a point where the variable is in the proper scope, such that
> > I can just have a statement like <%= puppetserver %> inside of the
> > template I'm using.
> >  
> > Thanks in advance!
> >  
> > --  
> > 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 
> > (mailto:puppet-users@googlegroups.com).
> > To unsubscribe from this group, send email to 
> > puppet-users+unsubscr...@googlegroups.com 
> > (mailto: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