Mit Hilfe von Puppet – einem Open Source Configuration Management System – ist es möglich Clients, Server und virtuelle Maschinen effizient zu installieren, verwalten und zu administrieren. Systeme, die von Puppet verwaltet werden, werden über sogenannte „Node-Definitionen“  in Puppet bekannt gemacht und erhalten hierüber ihre Konfiguration in Form von angefertigten Modulen, Klassen und Ressourcen.

node beispielserver.domain.de {
  include beispielklasse
}

Reguläre Ausdrücke werden ebenfalls unterstützt, um z.B. alle „beispielserver123.domain.de“ zusammenzufassen.

node /beispielserver\d+.domain.de/ {
  include beispielklasse
}

In manchen Fällen kann es jedoch auch sinnvoll sein, seine Hosts aus externen Quellen (LDAP, MySQL, usw.) zu beziehen. Zum Beispiel mit einer im Unternehmen bereits existierende CMDB. Puppet bietet mit „External Node Classifier“ (ENC) die Möglichkeit, externe Quellen abzufragen. Um ENC zu aktivieren, muss die Puppetkonfigurationsdatei puppet.conf um zwei Zeilen angepasst werden.

[master]
node_terminus = exec
external_nodes = /usr/local/bin/puppet_node_classifier

Anschließend wird Puppet seine Hosts nicht mehr in seiner statischen site.pp suchen, sondern übergibt den anfragenden Hostname an das Skript unter dem angegebenen Pfad. Das Skript kann ebenfalls wie Puppet in Ruby geschrieben sein oder in einer anderen Skript- oder Programmiersprache die YAML unterstützten, z.B Perl, C, PHP u.v.m.
Die Ausgabe des Skripts an stdout in YAML formatiert sieht wie folgt aus und entspricht der Node-Definition im erst genannten Beispiel:

---
classes:
- beispielklasse
...

Außerdem muss das Skript als Return-Status „0“ zurückgeben, damit Puppet die Katalogzuweisung erfolgreich durchführen kann und der Host entsprechend der Anweisungen konfiguriert werden kann.

Sebastian Saemann
Sebastian Saemann
CEO Managed Services

Sebastian kam von einem großen deutschen Hostingprovider zu NETWAYS, weil ihm dort zu langweilig war. Bei uns kann er sich nun besser verwirklichen, denn er leitet das Managed Services Team. Wenn er nicht gerade Cloud-Komponenten patched, versucht er mit seinem Motorrad einen neuen Rundenrekord aufzustellen.