Using Hiera as an ENC
Hiera provides an interesting function called hiera_include
, which allows you to include all the classes defined for a given key.
This, in practice, exploits the Hiera flexibility to provide classes to nodes as does an External Node Classifier.
It's enough to place in our /etc/puppet/manifests/site.pp
a line like this:
hiera_include('classes')
Then, define in our data sources a classes
key with an array of the classes to include.
In a YAML-based backend, it would look like the following:
--- classes: - apache - mysql - php
This is exactly the same as having something like the following in our site.pp
:
include apache include mysql include php
The classes
key (it can have any name, but classes
is a standard de facto) contains an array, which is merged along the hierarchy. So, in common.yaml
, we can define the classes that we want to include on all our nodes, and include specific classes for specific servers, adding them at the different layers of our hierarchy...