Hi puppeteers,

I’m starting from scratch with Puppet 2.7 and I’m trying to avoid some 
pitfalls from the past using another configuration management tool.  I 
think most of the issues I had could be solved by Puppet and Hiera but 
being new to the tool and the approach, Im seeking for advice.

I have a common use case with the configuration of sysctl settings I 
believe will help me understand if Hiera is the right tool or approach to 
the problem.   Now the requirements are :

1) All nodes get a set of default settings

2) Based on facts such as function/application, settings are added 
incrementally

3) A default setting might be overridden for a specific use.

 

The ‘old’ way I used to solve this was through templating and lots if/else 
statements… but that’s exactly what Im trying to avoid as the knowledge 
about the infrastructure gets spread everywhere.

 When I found about the Puppet and Augeas combination I thought that was 
the solution.  I also wanted an ENC and using hiera sound great also.

 So here’s the hiera config :

---

:hierarchy:

    - %{fqdn}

    - %{os}

    - %{role}

    - %{datacenter}

    - common

:backends:

    - yaml

:yaml:

    :datadir: '/etc/puppet/hieradata'

 

The common sysctl are in common.yaml:

classes:

    - sysctl

sysctl_settings:

     net.ipv4.ip_forward:

        value: 0

     kernel.randomize_va_space:

        value: 1

     net.ipv4.conf.all.send_redirects:

        value: 0

 

The more specific and possibly overriding parameters are in role-ap.yaml:

classes:

    - sysctl

 

sysctl_settings:

      vm.swapiness:

             value: 0

      net.ipv4.ip_forward:

             value: 1


The sysctl wrapper module :


class sysctl {

    create_resources( sysctl::config, hiera('sysctl_settings') )

}

define sysctl::config ($value) {

         augeas { "sysctl_${name}":

             context => "/files/etc/sysctl.conf",

             lens    => "sysctl.lns",

             incl    => "/etc/sysctl.conf",

             changes => [ "set ${name} ${value}" ],

         }

    }

 Now the issue is that only the settings found in role-ap.yaml are applied.   
It looks like hiera stops at the first array matching in the hierarchy.   Did 
I got this all wrong?   

 The other issue with this approach is I can’t define a ‘’sysctl_${name}’ 
resource twice so overriding a parameter doesn’t work either.  How can I 
get the same result as with capitalization of a File resource for example?

Thanks to all, 

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/puppet-users/-/U9d-1z3AVTUJ.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to