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]> 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]. > 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/CAMo7R_fXOd3amSM3HC9F_tC2%2BXA%2BW4DwY%3Dx3JyFPou5r%2B4dJBw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
