Managing classes with Hiera
In Chapter 3, Managing your Puppet code with Git, we saw how to set up your Puppet repo on multiple nodes and auto-apply the manifest using a cron job and the run-puppet
script. The run-puppet
script runs the following commands:
cd /etc/puppetlabs/code/environments/production && git pull/opt/puppetlabs/bin/puppet apply manifests/
You can see that everything in the manifests/
directory will be applied on every node. Clearly, Puppet is much more useful when we can apply different manifests on each node; some nodes will be web servers, others database servers, and so on. In fact, we would like to include some classes on all nodes, for general administration, such as managing user accounts, and other classes only on specific nodes. So how do we do that?
Using include with lookup()
Previously, when including classes in our manifest, we've used the include
keyword with a literal class name, as in the following example:
include postgresql include apache
However...