You seem to have a couple of misunderstandings here - Firstly what you call a 
node definition isn't a node definition, that would look something like  

node 'mynode-dev' {
  include robin_dev
}

Secondly, you want to make your robin_dev class parameterized to achieve what 
you want, e.g.:

class robin_dev (
   $app_version = '0.5'
) {
 include robin_dev::install
}

This parameter can now be overridden when you declare the class in the node 
definition….

class { 'robin_dev':
   app_version => '1.0',
}

Or even better, use Hiera and override it there and include the class without 
parameters

eg: hosts/mynode-dev.yaml
---
robin_dev::app_version: 1.0

Regards
Craig

--  
Enviatics | Automation and Configuration Management
http://www.enviatics.com | @Enviatics
Puppet Training Courses http://www.enviatics.com/training/


On Wednesday, 5 March 2014 at 00:13, Robin Y. wrote:

> Greetings,
>  
> I could use some clarity on node scope, class scope, and best practices. I 
> have the following:
>  
> > # Node definition
> > if $hostname == 'mynode-dev' {
> >  
> > $app_version = '1.0'
> >  
> > include robin_dev
> >  
> > }
> >  
> >  
> > # Class definition  
> > class robin_dev {
> > if $app_version == undef {
> >  
> > $app_version = '0.5'
> >  
> > }
> >  
> > include robin_dev::install
> > }
> >  
> > class robin_dev::install {
> > package {
> >  
> > "app_name": ensure => $robin_dev::app_version;
> >  
> > }
> > }
>  
>  
>  
> My intent is to set $app_version within my node definition. If $app_version 
> is not set there, I 'd like it to default to a version that is set within 
> class robin_dev itself, which is 0.5 in the above example.
>  
> While the above example works as I just described, i'm not understanding how 
> $robin_dev::app_version referenced in class robin_dev::install returns "1.0" 
> when I its assigned in the node definition. I initially assumed that class 
> robin_dev would need to re-assign the variable within the class itself like 
> this:
>  
> > # Class definition  
> > class robin_dev {
> > if $app_version == undef {
> > $version = '0.5'
> > } else {
>  
>  
> $version = $app_version
> > include robin_dev::install
> > }
>  
>  
>  
> > class robin_dev::install {
> > package {
> >  
> > "app_name": ensure => $robin_dev::version;
> >  
> > }
> >  
> > }
>  
>  
> Any insights would be appreciated. Thank you.  
>  
> --  
> 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 [email protected] 
> (mailto:[email protected]).
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/puppet-users/c51f4240-200f-425e-b6b5-abb3347bc9cf%40googlegroups.com
>  
> (https://groups.google.com/d/msgid/puppet-users/c51f4240-200f-425e-b6b5-abb3347bc9cf%40googlegroups.com?utm_medium=email&utm_source=footer).
> For more options, visit https://groups.google.com/groups/opt_out.



-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/3D96DC2BD905457A8873FB6C50B9D6D6%40craigdunn.org.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to