On Fri, Jun 17, 2011 at 06:18:16PM +0100, Ken Barber wrote: > So: > > name: unxslet01.ucop.edu > parameters: > fw_tcp_ports: 22 9080 3000 > classes: > - firewall_wrapper > - common::suse > - firewall > > Is including both 'firewall' and 'firewall_wrapper'. But I think you > are hitting non-deterministic ordering here ... you only really want > to include 'firewall_wrapper' and have that pull in 'firewall'. > Otherwise, you may pull in 'firewall' too early, which would apply its > default settings.
Hi Ken, I got it to work! Whew. But not by removing 'firewall'. I actually need to include this class in my testing, because it gets included by default on all nodes as part of my 'common::suse' class. The problem was that puppet agent was not even using the correct class list for some mysterious and buggy reason. My external_node command returns the correct class list as you have above, but when I looked carefully at the puppet output (sleep helped here) I saw that the agent was not even hitting class 'firewall_wrapper' but a different testing class called 'firewall_extras': unxslet01:/var/lib/puppet # puppet agent -t info: Retrieving plugin info: Loading facts in adinfo info: Loading facts in adinfo info: Caching catalog for unxslet01.ucop.edu info: Applying configuration version '1308273896' notice: 22 9080 3000 notice: /Stage[main]/Firewall_extras/Notify[msg]/message: defined 'message' as '22 9080 3000' notice: 22 notice: /Stage[main]/Firewall/Firewall::Firewall_conf[default]/Notify[msg1]/message: defined 'message' as '22' notice: Finished catalog run in 8.59 seconds I could not figure out why. I tried removing the cached catalog and restating puppet agent, but still the wrong class was used. Only after I deleted the 'firewall_extras' class from my manifest entirly did agent use the configured class: unxslet01:/var/lib/puppet # puppet agent -t info: Retrieving plugin info: Loading facts in adinfo info: Loading facts in adinfo info: Caching catalog for unxslet01.ucop.edu info: Applying configuration version '1308331369' notice: 22 9080 3000 notice: /Stage[main]/Firewall/Firewall::Firewall_conf[default]/Notify[msg1]/message: defined 'message' as '22 9080 3000' notice: 22 9080 3000 notice: /Stage[main]/Firewall_override/Notify[msg0]/message: defined 'message' as '22 9080 3000' notice: Finished catalog run in 6.80 seconds I was not able to reproduce this bug. > > So drop 'firewall' from your classes in dashboard and you may find it > does the correct thing ... > > FYI, this works for me: > > kbarber:tmp ken$ puppet --version > 2.6.8 > kbarber:tmp ken$ cat inherits.pp > class firewall { > define firewall_conf ($fw_services_ext_tcp = "22") { > notify { "msg1": message => $fw_services_ext_tcp, } > } > firewall_conf {"default": } > } > > class firewall_override ( $tcp_ports ) inherits firewall { > Firewall::Firewall_conf["default"] { > fw_services_ext_tcp => $tcp_ports, > } > notify { "msg0": message => $tcp_ports, } > } > > class firewall_wrapper { > class { "firewall_override": tcp_ports => $::fw_tcp_ports, } > } > > $fw_tcp_ports = "22 100 2323" > include firewall_wrapper > kbarber:tmp ken$ puppet apply -v inherits.pp > info: Applying configuration version '1308330991' > notice: 22 100 2323 > notice: > /Stage[main]/Firewall/Firewall::Firewall_conf[default]/Notify[msg1]/message: > defined 'message' as '22 100 2323' > notice: 22 100 2323 > notice: /Stage[main]/Firewall_override/Notify[msg0]/message: defined > 'message' as '22 100 2323' > notice: Finished catalog run in 0.01 seconds > kbarber:tmp ken$ > > ken. > > On Fri, Jun 17, 2011 at 2:56 AM, Ashley Gould <ago...@ucop.edu> wrote: > > On Wed, Jun 15, 2011 at 07:48:50PM -0700, Ashley Gould wrote: > >> > >> On Wed, Jun 15, 2011 at 06:13:52PM +0100, Ken Barber wrote: > >> > Certainly works for me in a simplified example ... can you simplify > >> > your example so it just does a notify? > >> > > >> > class firewall_extras ( > >> > $services = undef, > >> > ) { > >> > notify { "msg": message => $services } > >> > } > >> > > >> > class myfirewall { > >> > class { "firewall_extras": services => $::firewall_services } > >> > } > >> > > > > > > > Ok, I did finally get a basic parameterized class to work from > > dashboard ENC: > > > > class firewall_extras($tcp_ports) { > > notify { "msg": message => $tcp_ports, } > > } > > > > class firewall_wrapper { > > class { "firewall_extras": tcp_ports => $::fw_tcp_ports, } > > } > > > > --- > > > > agould@pmlab02-vhost:/data/puppet/production> > > /usr/share/puppet-dashboard/bin/external_node unxslet01.ucop.edu > > --- > > name: unxslet01.ucop.edu > > parameters: > > fw_tcp_ports: 22 9080 3000 > > classes: > > - firewall_wrapper > > - common::suse > > > > unxslet01:~ # puppet agent -t > > info: Retrieving plugin > > info: Loading facts in adinfo > > info: Loading facts in adinfo > > info: Caching catalog for unxslet01.ucop.edu > > info: Applying configuration version '1308273566' > > notice: 22 9080 3000 > > notice: /Stage[main]/Firewall_extras/Notify[msg]/message: defined 'message' > > as '22 9080 3000' > > notice: Finished catalog run in 7.64 seconds > > > > > > But what I really want is to use a param class to override variables in > > a base class. Below is a stripped version. the value for the param > > I set in dashboard shows up in the override class but never makes it > > to the base class. > > > > # Base class > > # > > class firewall { > > > > define firewall_conf ( > > $fw_services_ext_tcp = "22" > > ) { > > file { "/etc/sysconfig/SuSEfirewall2": > > content => template("firewall/SuSEfirewall2.erb"), > > } > > notify { "msg1": message => $fw_services_ext_tcp, } > > } > > > > # Implement default firewall setup > > firewall_conf {"default": } > > > > } > > > > # Override class > > # > > class firewall_override ( $tcp_ports ) inherits firewall { > > > > # modify default firewall setup > > Firewall::Firewall_conf["default"] { > > fw_services_ext_tcp => $tcp_ports, > > } > > notify { "msg0": message => $tcp_ports, } > > } > > > > # Wrapper class for Dashboard > > # > > class firewall_wrapper { > > class { "firewall_override": tcp_ports => $::fw_tcp_ports, } > > } > > > > > > agould@pmlab02-vhost:/data/puppet/production> > > /usr/share/puppet-dashboard/bin/external_node unxslet01.ucop.edu > > --- > > name: unxslet01.ucop.edu > > parameters: > > fw_tcp_ports: 22 9080 3000 > > classes: > > - firewall_wrapper > > - common::suse > > - firewall > > > > > > > > unxslet01:~ # puppet agent -t > > info: Retrieving plugin > > info: Loading facts in adinfo > > info: Loading facts in adinfo > > info: Caching catalog for unxslet01.ucop.edu > > info: Applying configuration version '1308273896' > > notice: 22 9080 3000 > > notice: /Stage[main]/Firewall_extras/Notify[msg]/message: defined 'message' > > as '22 9080 3000' > > notice: 22 > > notice: > > /Stage[main]/Firewall/Firewall::Firewall_conf[default]/Notify[msg1]/message: > > defined 'message' as '22' > > notice: Finished catalog run in 6.76 seconds > > > > > > -- -ashley Did you try poking at it with a stick? -- 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.