Using an external node classifier
When Puppet runs on a node, it needs to know which classes should be applied to that node. For example, if it is a web server node, it might need to include an apache
class. The normal way to map nodes to classes is in the Puppet manifest itself, for example in a nodes.pp
file:
node 'web1' { include apache }
Alternatively, you can use an external node classifier to do this job. An external node classifier (ENC for short) is any executable program which can accept a node name and return a list of classes which should be applied to that node.
An ENC could be a simple shell script, for example, or a wrapper around a more complicated program or API that can decide how to map nodes to classes. In this example we'll build the most trivial of ENCs, a shell script which simply prints out a list of classes to include.
Getting ready...
An ENC has certain restrictions compared to a node declaration: for example, you can't declare individual resources, but can only include...