Wolf Noble
2012-Jul-08 18:00 UTC
[Puppet Users] create multiple resources from an array of things.
Hi gang, I feel like I''m missing something fundamental here… I''ve got the following: class snmp::rhel::rh5enable { $collector = [''10.0.0.1'', ''10.0.0.2''] define add_snmp_hosts_allow ($ip) { exec { "hosts_allow_$ip": command => "/bin/echo \"snmpd : $ip : ALLOW\" >>/etc/hosts.allow", unless => "/bin/grep -c \"snmpd : $ip : ALLOW\" /etc/hosts.allow", } } notify { "COLLECTOR IS SET TO ${collector}": } add_snmp_hosts_allow{$collector: ip=> $collector,} } yet I get borked, as : err: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate declaration: Exec[hosts_allow_10..0.0.110.0.0.2] is already declared in file /etc/puppetlabs/puppet/modules/core/snmp/manifests/rhel/rh5enable.pp at line 4; cannot redeclare at /etc/puppetlabs/puppet/modules/core/snmp/manifests/rhel/rh5enable.pp:4 on node centos how do I go about doing this "correctly" ? ________________________________ This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Eric Shamow
2012-Jul-08 18:46 UTC
Re: [Puppet Users] create multiple resources from an array of things.
Wolf, Are you calling that parameterized class multiple places? This sounds like a situation where what you want may be a defined type but in fact you are using a parameterized class. You can include paramaterized classes multiple times using "include" but not using parameters. -Eric -- Eric Shamow Professional Services http://puppetlabs.com/ (c)631.871.6441 On Sunday, July 8, 2012 at 2:00 PM, Wolf Noble wrote:> Hi gang, > > I feel like I''m missing something fundamental here… > I''ve got the following: > > class snmp::rhel::rh5enable { > $collector = [''10.0.0.1'', ''10.0.0.2''] > define add_snmp_hosts_allow ($ip) { > exec { "hosts_allow_$ip": > command => "/bin/echo \"snmpd : $ip : ALLOW\" >>/etc/hosts.allow", > unless => "/bin/grep -c \"snmpd : $ip : ALLOW\" /etc/hosts.allow", > } > } > notify { "COLLECTOR IS SET TO ${collector}": } > add_snmp_hosts_allow{$collector: ip=> $collector,} > } > > yet I get borked, as : > > err: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate declaration: Exec[hosts_allow_10..0.0.110.0.0.2] is already declared in file /etc/puppetlabs/puppet/modules/core/snmp/manifests/rhel/rh5enable.pp at line 4; cannot redeclare at /etc/puppetlabs/puppet/modules/core/snmp/manifests/rhel/rh5enable.pp:4 on node centos > > > how do I go about doing this "correctly" ? > > > > > > ________________________________ > > This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. > > -- > 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+unsubscribe@googlegroups.com (mailto:puppet-users+unsubscribe@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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Wolf Noble
2012-Jul-08 19:38 UTC
Re: [Puppet Users] create multiple resources from an array of things.
Hi Eric, No, this class is not being called anywhere else. What I think is going on is that I have an array of two strings, but somehow the defined type is getting a concatenated string which contains both values of the array instead of treating each element of the array as an individual. The end goal here is to have an array of each ip address that needs to have an entry in /etc/hosts.allow, and have a defined type which is fed those IPs and verifies the presence of/creates the entries as needed. is there a better direction to approach this than I''m employing? On Jul 8, 2012, at 1:46 PM, Eric Shamow wrote:> Wolf, > > Are you calling that parameterized class multiple places? > > This sounds like a situation where what you want may be a defined type but in fact you are using a parameterized class. You can include paramaterized classes multiple times using "include" but not using parameters. > > -Eric > > -- > > Eric Shamow > Professional Services > http://puppetlabs.com/ > (c)631.871.6441 > > > On Sunday, July 8, 2012 at 2:00 PM, Wolf Noble wrote: > >> Hi gang, >> >> I feel like I''m missing something fundamental here… >> I''ve got the following: >> >> class snmp::rhel::rh5enable { >> $collector = [''10.0.0.1'', ''10.0.0.2''] >> define add_snmp_hosts_allow ($ip) { >> exec { "hosts_allow_$ip": >> command => "/bin/echo \"snmpd : $ip : ALLOW\" >>/etc/hosts.allow", >> unless => "/bin/grep -c \"snmpd : $ip : ALLOW\" /etc/hosts.allow", >> } >> } >> notify { "COLLECTOR IS SET TO ${collector}": } >> add_snmp_hosts_allow{$collector: ip=> $collector,} >> } >> >> yet I get borked, as : >> >> err: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate declaration: Exec[hosts_allow_10..0.0.110.0.0.2] is already declared in file /etc/puppetlabs/puppet/modules/core/snmp/manifests/rhel/rh5enable.pp at line 4; cannot redeclare at /etc/puppetlabs/puppet/modules/core/snmp/manifests/rhel/rh5enable.pp:4 on node centos >> >> >> how do I go about doing this "correctly" ? >> >> >> >> >> >> ________________________________ >> >> This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. >> >> -- >> 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+unsubscribe@googlegroups.com (mailto:puppet-users+unsubscribe@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+unsubscribe@googlegroups.com. > For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. >________________________________ This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Wolf Noble
2012-Jul-08 21:35 UTC
Re: [Puppet Users] create multiple resources from an array of things.
I figured out what I was doing wrong. I wasn''t (maybe I''m still not? :) ) properly taking advantage of the freebie parameter ''title'' of defined types. This now seems to behave like I had hoped it would: class snap::rhel::rh5enable { #... $collector = [''10.0.0.1'',''10.0.0.2''] #… define add_snmp_hosts_allow () { exec { "hosts_allow_$title": command => "/bin/echo \"snmpd : $title : ALLOW\" >>/etc/hosts.allow", unless => "/bin/grep -c \"snmpd : $title : ALLOW\" /etc/hosts.allow", } }#end define #... notify { "COLLECTOR IS SET TO ${collector}": } add_snmp_hosts_allow{$collector:} #... } notice: /Stage[main]/Snmp::Rhel::Rh5enable/Snmp::Rhel::Rh5enable::Add_snmp_hosts_allow[10.0.0.2]/Exec[hosts_allow_10.0.0.2]/returns: executed successfully notice: COLLECTOR IS SET TO 10.0.0.110.0.0.2 notice: /Stage[main]/Snmp::Rhel::Rh5enable/Notify[COLLECTOR IS SET TO 10.0.0.110.0.0.2]/message: defined ''message'' as ''COLLECTOR IS SET TO 10.0.0.110.0.0.2'' notice: /Stage[main]/Snmp::Rhel::Rh5enable/Snmp::Rhel::Rh5enable::Add_snmp_hosts_allow[10.0.0.1]/Exec[hosts_allow_10.0.0.1]/returns: executed successfully notice: Finished catalog run in 6.76 seconds On Jul 8, 2012, at 2:38 PM, Wolf Noble wrote:> Hi Eric, > > No, this class is not being called anywhere else. > > What I think is going on is that I have an array of two strings, but somehow the defined type is getting a concatenated string which contains both values of the array instead of treating each element of the array as an individual. > > The end goal here is to have an array of each ip address that needs to have an entry in /etc/hosts.allow, and have a defined type which is fed those IPs and verifies the presence of/creates the entries as needed. > > is there a better direction to approach this than I''m employing? > > > > > On Jul 8, 2012, at 1:46 PM, Eric Shamow wrote: > >> Wolf, >> >> Are you calling that parameterized class multiple places? >> >> This sounds like a situation where what you want may be a defined type but in fact you are using a parameterized class. You can include paramaterized classes multiple times using "include" but not using parameters. >> >> -Eric >> >> -- >> >> Eric Shamow >> Professional Services >> http://puppetlabs.com/ >> (c)631.871.6441 >> >> >> On Sunday, July 8, 2012 at 2:00 PM, Wolf Noble wrote: >> >>> Hi gang, >>> >>> I feel like I''m missing something fundamental here… >>> I''ve got the following: >>> >>> class snmp::rhel::rh5enable { >>> $collector = [''10.0.0.1'', ''10.0.0.2''] >>> define add_snmp_hosts_allow ($ip) { >>> exec { "hosts_allow_$ip": >>> command => "/bin/echo \"snmpd : $ip : ALLOW\" >>/etc/hosts.allow", >>> unless => "/bin/grep -c \"snmpd : $ip : ALLOW\" /etc/hosts.allow", >>> } >>> } >>> notify { "COLLECTOR IS SET TO ${collector}": } >>> add_snmp_hosts_allow{$collector: ip=> $collector,} >>> } >>> >>> yet I get borked, as : >>> >>> err: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate declaration: Exec[hosts_allow_10..0.0.110.0.0.2] is already declared in file /etc/puppetlabs/puppet/modules/core/snmp/manifests/rhel/rh5enable.pp at line 4; cannot redeclare at /etc/puppetlabs/puppet/modules/core/snmp/manifests/rhel/rh5enable.pp:4 on node centos >>> >>> >>> how do I go about doing this "correctly" ? >>> >>> >>> >>> >>> >>> ________________________________ >>> >>> This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. >>> >>> -- >>> 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+unsubscribe@googlegroups.com (mailto:puppet-users+unsubscribe@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+unsubscribe@googlegroups.com. >> For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. >> > > > ________________________________ > > This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. > > -- > 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+unsubscribe@googlegroups.com. > For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. >________________________________ This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.