Konfigurationsmanager für DevOps-Szenarien Automatisierung mit Puppet

Autor / Redakteur: Thomas Joos / Stephan Augsten

Unternehmen, die auf DevOps setzen oder ständig Anwendungen bereitstellen müssen, kommen um Konfigurationsmanager nicht herum. Puppet ist der Platzhirsch unter den Tools, die die Automatisierung steuern und überwachen.

Anbieter zum Thema

Mit Puppet lassen sich verschiedenste Jobs innerhalb der IT-Umgebung automatisieren.
Mit Puppet lassen sich verschiedenste Jobs innerhalb der IT-Umgebung automatisieren.
(Bild: puppet.com)

Tools wie Ansible, Chef, Puppet oder Saltstack sind wichtige Werkzeuge, wenn es darum geht, die Bereitstellung von Anwendungen im Netzwerk oder Computereinstellungen zu automatisieren. Puppet ist das bekannteste Tool im DevOps-Bereich für die automatisierte Konfiguration und Continuous Delivery.

Puppet ist vor allem auf große Unternehmen und ihre Netzwerke ausgerichtet. Neben Anwendungen und Betriebssystemen lassen sich mit Puppet auch ganze Farmen mit virtuellen Servern bereitstellen, deren Konfiguration vollständig automatisiert wird.

In kleinen Netzwerken kann Puppet aber ebenfalls eingesetzt werden, wenige Endgeräte lassen sich genauso automatisieren wie tausende PCs und Server oder virtuelle Maschinen. Da Puppet sehr skalierbar ist, können kleine Netzwerke bereits auf den Manager setzen und müssen das System nicht wechseln, wenn das Netzwerk wächst.

Puppet mit der Cloud und Containern

Puppet besteht im Kern aus einer Open-Source-Plattform mit der Bezeichnung „Puppet 5 Platform“. Der Hersteller bietet in der aktuellen Version eine neue Erweiterung mit der Bezeichnung „Lumogon“ für Enterprise-Umgebungen. Diese erleichtert die Verwaltung von Containern. Puppet Cloud Discovery erlaubt wiederum die Anbindung von Cloudlösungen und kann auch diese an die Infrastruktur anbinden.

Das ist die Aufgabe von Puppet

Puppet arbeitet deklarativ, soll die Konfiguration der Systeme im Netzwerk automatisieren und den Zustand auch entsprechend überwachen. Administratoren legen also einen Zustand fest, wie ein System aussehen soll, das von Puppet automatisiert wird, und steuern danach die einzelnen Schritte hin zu dieser automatisierten Bereitstellung. Dazu arbeitet Puppet auch mit Abhängigkeiten zwischen Ressourcen. Da Puppet auf Ruby aufbaut, ist das Tool flexibel, dafür aber auch etwas komplizierter als zum Beispiel Ansible.

Das müssen Entwickler und Admins wissen

Einfach ausgedrückt besteht Puppet aus zwei verschiedenen Säulen. Die Konfigurationssprache legt deklarativ (beschreibend) fest, wie die einzelnen Hosts und Dienste im Netzwerk generell funktionieren sollen und wie sie konfiguriert sein sollen.

Eine weitere Schicht ermöglicht wiederum Administratoren die gewünschte Konfiguration im Netzwerk zu verteilen. Im Fokus stehen hier auch Linux-Rechner und andere Betriebssysteme, aber auch Windows und Unix. Die Konfiguration wird als Richtlinie definiert. Die Richtlinie wird im Netzwerk verteilt. Puppet setzt die Richtlinie auf den Servern und Arbeitsstationen um, und überwacht auch deren Umsetzung. Änderungen werden sofort festgestellt, in einem Bericht festgehalten und anschließend wieder entfernt.

Aufbau von Puppet

Puppet arbeitet für diese Vorgänge mit Manifesten (Module), Ressourcen und Klassen. Über diese werden bestimmte Zustände der Zielsysteme definiert. Auch wenn Puppet auf Ruby aufbaut, hat die Lösung den Ruf, dass die systemeigene Sprache einfach gelernt werden kann. Das System bietet auch eine interne Fehlerüberprüfung des Codes.

Da das System für große Netzwerke optimiert ist, besteht Puppet aus einem Client-Serversystem. Die zentrale Überwachung und Steuerung der Funktionen die Puppet automatisieren soll, erfolgt über den Server. Hier werden auch die Manifeste und Skripte gespeichert, also die Zustände der angebundenen Endgeräte. Der Server wird im Puppet-Netzwerk auch als „Master“ bezeichnet, die zu konfigurierenden Endgeräte sind die „Nodes“.

Damit die Nodes konfiguriert werden können, müssen diese ständig mit dem Puppet-Server in Verbindung stehen. Das erfolgt über eine Client-Software, die den Puppet-Prozess ständig am Laufen hält. Administratoren können festlegen wie oft der Puppet-Client auf dem Server sein Manifest herunterladen und lokal umsetzen soll.

Automatisierte Konfiguration der Clients

Der Puppet-Client schickt seine aktuelle Konfiguration zum Puppet-Server (Master) der diesen speichert. Anschließend wird das Manifest heruntergeladen und auf dem Client umgesetzt. Der Server erkennt die Änderungen zwischen Manifest und dem aktuellen Zustand und kann dadurch für jeden Client speziell festlegen, welche Aktionen und Konfigurationen durchgeführt werden sollen.

Auch die notwendigen Konfigurationen werden vom Node an den Master übermittelt. Dieser kann Administratoren benachrichtigen und die Konfigurationen auch in einem Bericht erfassen. Alle zur Verfügung stehenden Ressourcen lassen sich mit „puppet-resource -types“ einsehen.

Puppet setzt aber nicht nur den Zustand einzelner Ressourcen auf dem Server oder Endgerät fest, sondern legt auch Abhängigkeiten zwischen Ressourcen fest. So kann zum Beispiel festgelegt werden, dass ein bestimmter Systemdienst startet, sobald ein abhängiger Dienst gestartet ist, oder bestimmte Dateien vorhanden sind.

Fazit

Die Automatisierung der Bereitstellung von Anwendungen, Servern, neuen Programmversionen oder die automatische Kompilierung von Quellcode, spielt heute für Unternehmen aller Art eine wichtige Rolle. Die bekanntesten Produkte sind Puppet, Chef und Ansible. Auch Saltstack wird in diesem Bereich häufig eingesetzt.

Generell lohnt es sich für große Unternehmen, einen Blick auf Puppet zu werfen, während mittelständische und kleine Netzwerke durchaus auch mit Ansible oder Saltstack arbeiten können. Wie erwähnt sind Chef und Puppet auch in kleinen Netzwerken nützlich, ihr Schwerpunkt liegt aber eher in größeren Umgebungen.

(ID:44845866)