Ah, I didn't know you could do that. Reading through the documentation can lead to one's mind melting.
This may be preferable as create_resources messes up my resource ordering. Thanks! On Friday, July 25, 2014 8:40:27 PM UTC-7, Cristian Falcas wrote: > > I think you can solve like this also: > > <% @clusters.each do |key,value| %> > cluster name is <%=key %> and cluster port is <%= value %> > <% end -%> > > > > > On Fri, Jul 25, 2014 at 8:56 PM, senorsmile <[email protected] > <javascript:>> wrote: > >> I have solved this using create_resources >> http://docs.puppetlabs.com/references/latest/function.html#createresources >> >> which converts the hash into arrays that a define can digest. >> >> >> On Friday, July 25, 2014 10:27:21 AM UTC-7, senorsmile wrote: >>> >>> So, I have this partially working. >>> >>> in /etc/puppet/manifests/nodes.pp I have (all entries truncated and >>> scrubbed): >>> >>> node node_example { >>> class { 'ganglia::install::gmetad': >>> clusters => [ >>> 'cluster1', >>> 'cluster2', >>> 'cluster3', >>> 'cluster4', >>> ] >>> } >>> >>> >>> and under /etc/puppet/modules/ganglia/install/gmetad.pp >>> >>> class ganglia::install::gmetad () { >>> >>> >>> define generate_gmond_init( >>> $init_template = 'ganglia/gmond_init.erb', >>> $conf_template = 'ganglia/gmond_master_conf.erb', >>> ) { >>> file { "/etc/init/gmond_${name}.conf": >>> content => template("$init_template"), >>> } >>> file { "/etc/ganglia/gmond_${name}.conf": >>> content => template("$conf_template"), >>> } >>> } >>> >>> >>> generate_gmond_init{ $clusters: } >>> >>> >>> >>> } >>> >>> >>> Now, in each template I can call >>> <%= name %> >>> in order to call the name var as it passes through each array. >>> >>> >>> >>> I need to make this a little more complicated by adding more than a >>> single bit of information; i.e. I need to create a hash of clusters, each >>> with their own data, something like this: >>> >>> clusters => { >>> 'cluster1' => { port => 8655 }, >>> 'cluster2' => { port => 8656 }, >>> 'cluster3' => { port => 8657 }, >>> 'cluster4' => { port => 8658 }, >>> } >>> >>> so that I can access more than just the cluster name in each template. >>> >>> >>> On Friday, July 25, 2014 6:56:57 AM UTC-7, Yanis Guenane wrote: >>>> >>>> >>>> >>>> On 07/24/2014 08:08 PM, senorsmile wrote: >>>> > For example, I have an array like this: >>>> > >>>> > clusters => [ >>>> > 'cluster1', >>>> > 'cluster2', >>>> > 'cluster3', >>>> > 'cluster4', >>>> > ] >>>> > >>>> > >>>> > >>>> > I then have a cluster.init.erb that looks soemthing like this: >>>> > >>>> > start on runlevel [2345] >>>> > stop on runlevel [!2345] >>>> > >>>> > expect fork >>>> > respawn >>>> > >>>> > <% @clusters.each do | cluster | -%> >>>> > env PIDFILE="/var/run/${cluster}.pid" >>>> > >>>> > exec /usr/sbin/program_name --pid-file=$PIDFILE >>>> > <% end -%> >>>> > >>>> > >>>> > That is all theoretical at this point since it doesn't work. >>>> > What I need it to do is dynamically generate a certain number of >>>> files, >>>> > equal to the number of files in the array "clusters", whose names I >>>> will >>>> > not know beforehand, and changes from host to host. >>>> > >>>> >>>> You could create a define that would be an intermediate layer. Code >>>> would look like the following : >>>> >>>> Manifest >>>> -------- >>>> >>>> $clusters = ['cluster1', 'cluster2', 'clustern'] >>>> >>>> myclass::mydefine {$clusters : } >>>> >>>> >>>> Define >>>> ------ >>>> >>>> class myclass::mydefine { >>>> >>>> $path = "/tmp/${name}" >>>> >>>> file { $path : >>>> ensure => present, >>>> content => template('myclass/foo.erb'), >>>> } >>>> >>>> } >>>> >>>> Template >>>> -------- >>>> >>>> Find my value <%= @name %> >>>> >>>> >>>> Hope this helps, >>>> >>>> -- >>>> Yanis Guenane >>>> >>> -- >> 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] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/puppet-users/e0ef2668-931e-419d-916a-9541beb2ef68%40googlegroups.com >> >> <https://groups.google.com/d/msgid/puppet-users/e0ef2668-931e-419d-916a-9541beb2ef68%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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/93631c84-b157-4e06-bed5-8e82a374a137%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
