Just be careful how you call the variables: puppet var is <%= @name%>,
local var will be <%= name %>


On Sat, Jul 26, 2014 at 6:42 AM, senorsmile <[email protected]> wrote:

> 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]> 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/93631c84-b157-4e06-bed5-8e82a374a137%40googlegroups.com
> <https://groups.google.com/d/msgid/puppet-users/93631c84-b157-4e06-bed5-8e82a374a137%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_cpKeXk9CRJnu7r0GPJytULkD%3DQGG4L1a-Yv_op8N3oRA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to