Hi Trevor, thanks for the idea. On Thu, Jun 11, 2009 at 4:28 AM, Trevor Vaughan<peiriann...@gmail.com> wrote:
> Someone might give you a better answer, but try: > > <% if tags.index('httpd') && has_variable?('httpd::open_firewall') %> > > This *may not* work due to file parsing order, but I *think* that it will. I did too, but it doesn't :( The only reason I tried variables is because tags aren't visible (due to scoping?). It seems you can't see tags (autotags or tags set explicitly with tag('httpd') defined in classes your class includes. This is a real problem from where I'm sat; it does make me wonder what tags are actually useful for. I suppose I could define the tag in the node, but that seems pretty redundant since I'm also including the 'httpd' class. > Trevor > > Dick Davies wrote: >> I'm using a primitive template to build my iptables rulesets. >> It's all in a branch on my github repo at >> >> http://github.com/rasputnik/babysteps-puppet/tree/templated-iptables >> >> template that looks like: >> >> <% if has_variable?('httpd::open_firewall') %> >> -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j >> ACCEPT >> <% end -%> >> >> (see >> http://github.com/rasputnik/babysteps-puppet/blob/templated-iptables/modules/iptables/templates/iptables.erb >> ) >> >> i then set a variable in the httpd module like this: >> >> class httpd { >> $open_firewall = 'on' >> #.... rest of httpd class def. >> } >> >> [ >> http://github.com/rasputnik/babysteps-puppet/blob/templated-iptables/modules/httpd/manifests/init.pp >> ] >> >> The idea being that if a node has 'include httpd', then when it runs >> 'include iptables' >> it'll open the right port. >> >> This works fine for classes that include httpd. The trouble is that i >> get this error on >> nodes that don't : >> >> [r...@node03 ~]# puppetd -tv >> info: Retrieving plugins >> err: Could not retrieve catalog: Failed to parse template >> iptables/iptables.erb: Class httpd has not been evaluated so its >> variables cannot be referenced at >> /etc/puppet/modules/iptables/manifests/init.pp:11 on node node03.pixie >> warning: Not using cache on failed catalog >> >> >> To my mind, that should be a warning, not an error. >> >> Is there any 'guard' I can put in my template to stop this blowing up? >> >> I did try: >> >> <% if has_variable?('httpd') && has_variable?('httpd::open_firewall') %> >> >> but the first clause is always false, even on nodes that 'include httpd'. >> >> >> Sorry this has been a bit longwinded, but I'm a bit stumped here. >> Thanks in advance for >> any tips. >> >> > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.9 (GNU/Linux) > > iEYEARECAAYFAkowedoACgkQyjMdFR1108Dh0gCfWz7tn6/5+K2w9LZK2P+ajsab > hy4An1ogD2dP3yj9wuGpn4v/Q1dKmoEa > =7UvV > -----END PGP SIGNATURE----- > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---