I am trying to understand Puppet parameterized classes. I have a parameterized class defined this way:
class defaults(
$no_samba = 'FALSE'
)
{
if ($no_samba =~ /TRUE/) {
notify { "will not install samba": } ;
} else {
# install samba here
}
# More server install tasks here...
}
Furthermore, I define a basenode as follows:
node basenode
{
class {'defaults':
no_samba => 'FALSE',
}
}
and then I instantiate a server:
node myserver1 inherits basenode {
Class['defaults'] { no_samba => 'TRUE' }
}
However, this does not work. The myserver1 node does not show the notify message indicating that samba will not be installed.
Here’s my non-typo answer – I think you’re running into http://projects.puppetlabs.com/issues/7890
Here’s a code sample where I tweaked your code to get the effect you’re looking for, based on the rewritten example in the ticket:
When I run that with ‘puppet apply sample.pp’ with puppet 2.7.11 on Ubuntu 12.04, I get the following output: