El lunes, 6 de octubre de 2014 10:52:05 UTC-3, jcbollinger escribió:
>
>
>
> On Sunday, October 5, 2014 5:55:55 PM UTC-5, Ciro Iriarte wrote:
>>
>> Hi!, I'm starting to work with hiera and file templates, how would be the
>> best way to transform this hiera output:
>>
>> myanycast::bird::ospf:
>> myinstance:
>> tick: 2
>> rfc1583compat: 'yes'
>> export: 'all'
>> area:
>> 990:
>> stub: 'no'
>> interface:
>> eth0:
>> hello: 10
>> retransmit: 6
>> cost: 10
>> transmit_delay: 5
>> dead_count: 5
>> dead: 40
>> wait: 50
>> type: 'broadcast'
>>
>> To this in the final configuration file using templates?:
>>
>> protocol ospf myinstance:
>> tick 2;
>> yes;
>> export all;
>> area 990 {
>> stub no;
>> interface "eth0" {
>> hello 10;
>> retransmit 6;
>> cost 10;
>> transmit delay 5;
>> dead count 5;
>> dead 40;
>> wait 50;
>> type broadcast;
>> };
>> };
>> }
>>
>> There can be many areas per instance, and many interfaces per area.
>>
>
>
> If you haven't already, you should read the documentation
> <https://docs.puppetlabs.com/guides/templating.html>. Here's a partial
> implementation to give you the idea:
>
> modules/manycast/manifests/bird.pp
> ----
> class manycast::bird(
> $ospf,
> # ...
> ) {
> # Not sure what file you want to manage...
> file { '/etc/bird/ospf.conf':
> ensure => 'file',
> content => template('manycast/ospf.conf.erb'),
> # ...
> }
> }
>
>
> modules/manycast/templates/ospf.conf.erb
> ----
> <%
> @ospf.sort.each_pair do | instance, instance_data |
> -%>
> protocol ospf <%= instance %>:
> tick <%= instance_data.tick %>;
> <%= instance_data.rfc1583compat %>;
> export <%= instance_data.export %>;
> <%
> instance_data.area.sort.each_pair do | area, area_details |
> -%>
> area <%= area %> {
> stub <%= area_details.stub %>;
> <%
>
> * # Fill in the rest ...*-%>
> };
> <%
> end
> end if @ospf and @ospf.is_a Hash
> -%>
>
>
>
>> Also, something that I noticed about hashes is that each hiera query (at
>> least by hand) gives me the same data in different order. Can this trigger
>> a different md5 for the file and force a service reload each 30 minutes
>> even there are no configuration changes?
>>
>
>
> Yes, reordering the content of a file changes its MD5. If you have a
> service that receives events from this file, then such a reordering will
> cause Puppet to restart the service. Even if not, one generally wants to
> avoid the noise arising from meaningless resource modifications. That is
> the template's purpose for sorting the hashes.
>
>
> John
>
>
Trying this approach I get "Detail: undefined method `each_pair' for
#<Array:0x7f19bc81d288>" using this code:
<% if (@ospfconfig.is_a?(Hash)) and (@ospfconfig.count > 0) -%>
<% @ospfconfig.sort.each do |instance,instparam| -%>
protocol ospf <%= instance %> {
}
<% end -%>
<% end -%>
Can it be a Ruby version thing?
Regards,
Ciro
--
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/3fc2f5c1-532a-4de0-b461-10708dd5d9df%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.