Puppet ist eine Anwendung zur Automatisierung von Unix-Konfigurationen. Auf einem Server werden die gewünschten Resourcenzustände (Pakete, Dateien, Services, etc) für alle beteiligten Systeme definiert. Auf den Systemen selbst läuft ein Agent der sich regelmäßig die Zielkonfiguration vom Server holt und dann das lokale System entsprechend konfiguriert. Der Agent schickt beim Abrufen der Konfiguration auch Systeminfos wie Hostnamen und IP-Adressen mit. Das kann verwendet werden um die Konfigurationen zu parameterisieren.
Puppet ist es egal ob es einen oder hundert Server mit der gleichen Konfiguration beschickt. Gegenüber der manuellen Konfiguration skaliert der Arbeitsaufwand somit nicht mehr in der Anzahl der Systeme, sondern mit der Anzahl der Services, die betreut werden müssen.
Ein weiterer wichtiger Faktor ist die Organisation der Konfiguration in Module, die unabhängig voneinander entwickelt, getestet und ausgerollt werden können. David betreibt seit rund zwei Jahren das erste und eines der größten öffentlichen Repositories von solchen Modulen (BSD Lizenz). Dank meines Engagements in der Community wurde ich in letzter Zeit mehrmals gebeten puppet Schulungen für IT-Abteilungen zu halten.
Zuletzt darf man nicht vergessen, dass die Manifeste eine sehr detaillierte Dokumentation des (gewünschten) Systemzustandes bilden.
David benutzt puppet um für die EDV-Beratung&Service einen Web- und Mailhost zu betreiben. Vor puppet wurde jeder Kunde händisch angelegt und alle Stellen die man falsch machen kann (DNS, User, docroot, mail aliase usw usf) “experimentell erforscht”. Mit puppet wird kein Fehler ein zweites Mal gemacht, da Fehler im Sourcecode behoben werden, womit puppet ihn auch bei allen Bestandskunden korrigiert. Auch ein wichtiger Faktor gegenüber Einrichtungsskripten, die solche Korrekturen nur durch zusätzliche, komplexe Programmierung durchführen könnten.