Puppet ist Open Source und prinzipiell plattformübergreifend, unterstützt werden jedoch insbesondere unixoideBetriebssysteme wie Unix, Linux und FreeBSD. Die Unterstützung für Microsoft Windows ist in den letzten Jahren beinahe äquivalent zu den unixoiden Betriebssystemen.
Puppet ist in der Programmiersprache Ruby geschrieben.
Es existiert seit 2005 und wird von der Firma Puppet Labs entwickelt, die zu diesem Zweck gegründet wurde.
Hauptentwickler ist von Beginn an Luke Kanies.
Puppet ist eine freie Software und steht ab Version 2.7.0 unter der Apache License 2.0, davor unter der GPL.[3]
Ende Januar 2013 gab die Firma Puppet Labs bekannt, dass VMware im Rahmen einer strategischen Partnerschaft 30 Millionen US-Dollar in die Weiterentwicklung von Puppet investiert.[4]
Funktionsprinzip
Puppet arbeitet nach dem Client-Server-Prinzip.
Auf dem Server läuft ein zentraler Puppet-Daemon (puppetmaster), der die Konfigurationen der Rechner vorhält und auf Anfrage via REST-API austeilt.
Auf den Clients läuft je ein Puppet-Agent, der sich die Konfiguration vom Server holt und dann die Unterschiede der auf dem Client befindlichen zur gewünschten Konfiguration errechnet und anschließend entsprechende Änderungen vornimmt.
Ein Systemadministrator kann mit Puppet an zentraler Stelle die Konfiguration von an seinem Netzwerk angeschlossenen Rechnern verwalten.
Dazu legt dieser über „Puppet-Manifeste“ deklarativ den gewünschten Zustand eines Subsystems fest, den Puppet dann beim Ablauf umsetzt.
Deklarationen können konditioniert erfolgen.
Insbesondere kann das zu Puppet gehörige Zusatzprogramm facter verwendet werden, um Systemeigenschaften zu ermitteln, beispielsweise die Prozessorarchitektur, das Betriebssystem, oder ob die Puppet-Instanz auf einer virtuellen Maschine läuft.
Puppet-Durchläufe können mit den separaten Programmen puppet dashboard oder foreman visualisiert werden.
Diese lassen übersichtlich auf einer Web-Oberfläche Puppet-Reports darstellen.
Hiermit lassen sich schnell Probleme bereitende Rechner identifizieren und eine zeitnahe Problembehebung einleiten.
Notwendigkeit
Da Puppets Stärke darin liegt, große Systeme mit vielen Rechnern automatisiert zu verwalten, steht der Sysadmin vor der Aufgabe, dennoch den Überblick zu bewahren.
Nicht immer läuft ein Puppet-Durchlauf reibungslos ab.
Die Tendenz zu Fehlern liegt in heterogenen Systemen mit vielen verschiedenen Rechnermodellen und unterschiedlichen Nutzungsprofilen.
Die Gründe hierfür sind vielfältig (z. B. volle Festplatten, unerwartete dpkg-Abbrüche) und können oder sollen sicherheitshalber nicht automatisiert behoben werden.
Sofern Puppet noch lauffähig ist, versucht es zwar, alle Konfigurationen vorzunehmen, sobald jedoch ein aufgerufenes Programm einen unerwarteten Rückgabewert zurückgibt, wird der Puppet-Run als failed bewertet (verbleibende Tasks werden dennoch aufgerufen).
Die Ausgabe – ein puppet-report – eines jeden Puppet-Runs wird YAML-ausgezeichnet zurück an den Puppet-Master gesandt.
Die Reports werden vom Puppet-Master-Host geholt und in eine Datenbank eingetragen, um eine schnelle webbasierte Darstellung zu ermöglichen. Sie können zudem mit einer Monitoring-Software überwacht werden.
James Turnbull: Pulling Strings with Puppet: Configuration Management Made Easy Springer, 2008, ISBN 978-1-59059-978-5
James Turnbull, Peter Lieverdink, Dennis Matotek: Pro Linux System Administration, Chapter 19: “Configuration management”, S. 965–986, Springer, 2009, ISBN 978-1-4302-1912-5
↑Michael Coté: Puppet at Google. RedMonk Radio Episode 48. In: Coté's People Over Process. RedMonk, 11. Juni 2008, abgerufen am 8. Januar 2013 (englisch).