Dealing with exceptions

In a pristine environment, all your nodes with a certain role would be identical in every way and there would be no exceptions. Unfortunately, dealing with exceptions is a large part of the day-to-day business of running Puppet. It is possible to remove node level data from your code using roles and profiles together with Hiera, (roles, profiles, and modules).

Hiera can be used to achieve this separation of code from data. In Chapter 2, Organizing Your Nodes and Data, we configured hiera.yaml with roles/%{::role} in the hierarchy. The defaults for any role will be put in hieradata/roles/[rolename].yaml. The hierarchy determines the order in which files are searched for Hiera data. Our configuration is as follows:

---
:hierarchy:
  - "zones/%{::example_zone}"
  - "hosts/%{::hostname}"
  - "roles/%{::role}"
  - "%{::kernel}/%{::osfamily}/%{::lsbmajdistrelease}"
  - "is_virtual/%{::is_virtual}"
  - common

Any single host that requires an exception to the default value from the roles level YAML file can be put in either the hosts level or zones level YAML files.

The idea here is to keep the top-level role definition as clean as possible; it should only include profiles. Any ancillary modules (such as the virtual module) that need to be applied to specific nodes will be handled by either Hiera (via hiera_include) or the ENC.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset