
Framestock - stock.adobe.com
So verwenden Sie das Konfigurationsmanagement-Tool Puppet
Puppet automatisiert die Bereitstellung und Verwaltung von IT-Infrastrukturen. Es definiert Systeme als Code und sorgt für konsistente, sichere und skalierbare DevOps-Prozesse.
Der DevOps-Prozess von der Entwicklung bis zum Betrieb ist ein einziger Gesamtprozess mit einer Vielzahl von Aufgaben, die ihn vorantreiben. Feedback-Schleifen müssen aufrechterhalten werden, um sicherzustellen, dass alle im Laufe des Prozesses auftretenden Probleme an die richtige Stelle gemeldet werden, damit sie behoben werden können. Konfigurationsmanagement-Tools, darunter Puppet, unterstützen einige dieser kritischen Aufgaben.
Was ist ein Konfigurationsmanagement-Tool?
Ein wichtiger Teil des DevOps-Prozesses ist das Konfigurationsmanagement. Hier verwenden IT-Administratoren ein Tool oder eine Reihe von Tools, um die vorhandene Infrastruktur zu modellieren und Konfigurationen zu erstellen, die auf dieser Infrastruktur bereitgestellt werden sollen. Mit diesen Tools können Administratoren die Konfigurationen während des Betriebs überwachen und alle Probleme beheben, die in der Laufzeitumgebung auftreten.
Der Prozess verläuft wie folgt:
1. Erstellen Sie einen Entwurf der bereits vorhandenen Infrastruktur.
2. Definieren Sie das gewünschte Endergebnis.
3. Schaffen Sie diese Mittel, um dieses Ergebnis zu erreichen.
4. Führen Sie die Änderungen durch.
5. Stellen Sie sicher, dass das gewünschte Ergebnis erreicht wird.
6. Überwachen Sie das System.
7. Nehmen Sie erforderlicher Änderungen vor.
Diese Schritte werden nach Bedarf wiederholt und die Entwicklungs- und Support-Teams erhalten Feedback.
Was ist Puppet?
Es gibt verschiedene Tools auf dem Markt, sowohl Open-Source- als auch kommerzielle Systeme, die diese Konfigurationsmanagementfunktionen bieten. Ein Tool mit einer großen Anhängerschaft ist Puppet, das als Open-Source-Tool sowie als vollständig unterstützte kommerzielle Version, Puppet Enterprise, erhältlich ist.
Es gibt auch zusätzliche Produkte von Puppet:
- Puppet Comply bietet Funktionen zur kontinuierlichen Überwachung von Richtlinien als Code.
- Puppet Relay wurde inzwischen durch modernere Tools wie Puppet Bolt (ein agentenloses Tool für Aufgabenautomatisierung) und Puppet Task Runner ersetzt, die ereignisgesteuerte Automatisierung und Orchestrierung übernehmen.
Puppet bietet auch andere eigenständige Software zur Unterstützung von Unternehmen an.
So funktioniert Puppet
Puppet verwendet eine deklarative Sprache, die die Infrastruktur als eine Reihe von Ressourcen modelliert. Manifeste (Dateien mit der Endung .pp) bestehen aus Code in der deklarativen Puppet-Sprache und definieren den gewünschten Zustand der Infrastruktur. Puppet speichert Manifeste auf den Servern und verwendet sie, um bei Bedarf kompilierte Konfigurationsanweisungen zu erstellen, die über REST-APIs an die Agenten weitergeleitet werden.
Ein Puppet-Tool namens Facter ermittelt und meldet Fakten (Facts) über Knoten, die dann zur Erstellung der Manifeste und Konfigurationen verwendet werden. Zu den Fakten gehören integrierte Details der gesamten Plattform und ihrer Knoten, die direkt über Puppet abgerufen werden, benutzerdefinierte Informationen, die der Benutzer festlegt und bereitstellt, oder externe Details, die in einer anderen Programmiersprache wie Perl oder C – oder sogar in Klartext – geschrieben sind. Diese Fakten werden zu Variablen, die im Puppet-Manifest verfügbar sind.
Mit Fakten und Manifesten können Benutzer plattformunabhängige Konfigurationen erstellen und von einer einzigen Ressource aus auf verschiedene Betriebssysteme auf unterschiedlichen Maschinenkonfigurationen verweisen. Das Puppet-Konfigurationsmanagement-Tool stellt dann sicher, dass das gewünschte Ergebnis auf jeder Plattform erzielt wird.
Dieser allgemeine Ansatz zur Schaffung einer weitgehend hardwareunabhängigen Umgebung wird als Infrastructure as Code (IaC) bezeichnet. Der Benutzer benötigt kaum oder gar keine Kenntnisse darüber, was physisch in Bezug auf Server, Netzwerkkomponenten oder Storage vorhanden ist. Stattdessen gibt der Benutzer an, was erforderlich ist, und das Konfigurationsmanagement-Tool setzt die Anforderungen in die Realität um. Dazu gehört auch eine Funktion namens Idempotenz (Idempotency), die Anweisungen erstellt, die sicherstellen, dass immer das gleiche Ergebnis erzielt wird, unabhängig davon, wo die Ergebnisse erstellt werden.
In bestimmten Situationen kann eine manuelle Überschreibung erforderlich sein, etwa bei einer Dienstabhängigkeit von einem Betriebssystem-Patch oder Gerätetreiber. Puppet berücksichtigt dies über Hiera, ein System, das Speicherplatz für standortspezifische Konfigurationsdaten als externe Informationen in einer Lookup-Tabelle mit Schlüssel-Wert-Paaren bereitstellt. Dieses System unterstützt JSON-, YAML- und EYAML-Dateien und bietet Backend-Unterstützung für andere Systeme wie PostgreSQL. Auf diese Weise kann ein Benutzer ein Manifest erstellen, das bestimmte Konfigurationsdaten über Hiera abruft und Facter umgeht, um eine hochspezifische Laufzeitinstanz zu erstellen.
Nahezu alle Aspekte des Puppet-Codes werden in Modulen verwaltet, die sowohl Code als auch Daten enthalten. Jedes Modul verwaltet bestimmte Aufgaben, wie zum Beispiel die Installation und Verwaltung von Anwendungen auf der IT-Plattform. Die meisten Elemente, die mit Puppet zu tun haben, werden dann vom Server in PuppetDB gespeichert, einer Datenbank, die schnelle Operationen und den Zugriff auf Daten über APIs für andere Anwendungen ermöglicht.
Puppet bietet außerdem Tausende von vorgefertigten Modulen, die entweder von Puppet selbst oder von einer großen Gruppe von Drittanbietern und einzelnen Entwicklern stammen und über das Puppet Forge Repository verfügbar sind. Puppet fördert und pflegt die Puppet-Community, aber viele der Tausenden von Beteiligten sind völlig unabhängig vom Unternehmen.
Die Architektur von Puppet verstehen
Obwohl Puppet in einem reinen Servermodell mit Befehlszeilenzugriff (Command Line) ausgeführt werden kann, verwenden die meisten Benutzer den vollständigen Client-Server-Modus, in dem die Server als Master und die Clients als Agenten fungieren. Für eine hohe Verfügbarkeit sollten Sie mehr als einen Server verwenden.
Der Puppet-Agent fordert einzelne Kataloge vom Server an und empfängt sie, um dann den Zustand auf dem Knoten durchzusetzen, für den er verantwortlich ist. Jeder Agent verwaltet anschließend Berichte, die an den Server zurückgesendet werden. Der Server überwacht und verwaltet die gesamte Plattform. Er stellt außerdem die Daten und Konfigurationsdateien bereit, die die Agenten anfordern, und empfängt und verwaltet die von den Agenten zurückgesendeten Daten.
Die Architektur von Puppet basiert auf mehreren Schlüsselkomponenten der primären Serverumgebung:
1. Puppet Master ist die Anwendung, die Puppet-Code und -Daten kompiliert und speichert. Ihr Hauptzweck besteht darin, die Konfigurationsmanifeste zu Inventarinformationen zu verarbeiten, die sie dann an die Agenten verteilt. Seit Version 6 heißt die Komponente Primary Server statt Puppet Master.
2. Puppet-Agent ist die Anwendung, die auf jedem verwalteten Knoten ausgeführt wird. Die Aufgabe des Agenten besteht darin, Fakten an den Master zu senden, um den neuesten Katalog lokal anzuwenden.
3. Fakten sind Variablen, aus denen ein Knoten besteht, wie Betriebssysteme und IP-Adressen. Puppet kompiliert Fakten für den richtigen Katalog für jeden Knoten.
4. Manifeste bestehen aus Puppet-Code und teilen Puppet mit, wie ein System zu konfigurieren ist. Sie sind in der nativen Sprache von Puppet geschrieben und werden mit der Erweiterung .pp gespeichert.
5. Vorlagen sind endgültige Dokumente, die aus der Kombination von Code und Daten erstellt werden.
6. Dateien sind statische Inhalte, die heruntergeladen werden können.
7. Module sind eine einzelne Verzeichnisstruktur, die aus Manifesten und Daten wie Fakten, Vorlagen und Dateien besteht.
Puppet-Versionen
Puppet bietet sowohl eine Open-Source-Version als auch eine kommerzielle Version seiner Software an. Die Basisversion von Puppet konzentrierte sich ursprünglich auf die Bereitstellung einer GNU GPL für ein Konfigurationsmanagement-Tool, wurde jedoch ab der Puppet-Version 2.7.0 im Jahr 2011 auf ein Apache-Lizenz-2.0-Modell umgestellt. 8.10.x ist die aktuelle stabile Version (Oktober 2025). Diese Version bietet Unterstützung für neue Linux-Distributionen, zusätzliche Funktionen für Compliance und verbesserte Sicherheitsfunktionen. Außerdem ist Puppet weiterhin vollständig kompatibel mit Ruby 3.3.
Die kommerzielle Version, Puppet Enterprise, bietet eine Reihe von Funktionen, die die Bereitstellung und den Betrieb der Infrastruktur eines Unternehmens automatisieren: Orchestrierung, Automatisierung, rollenbasierte Zugriffskontrolle (RBAC), Compliance und Berichterstellung.
Vorteile der Verwendung von Puppet
Puppet ist eine gute Option für die Verwaltung der Prozesse zum Packen und Bereitstellen von Live-Anwendungsinstanzen in der IT-Betriebsumgebung. Puppet kann als eigenständige Installation ausgeführt werden, verfügt aber auch über eine offene Architektur. Unternehmen, die Puppet in einer Entwicklungsumgebung einsetzen, können es mit anderen Systemen verknüpfen, um DevOps-Prozesse zu unterstützen.
Um diesen Prozess zu unterstützen, bieten viele Entwicklungs-Tools Puppet-Integrationen, die es Entwicklern ermöglichen, direkt in ihrem bevorzugten Tool zu arbeiten. Mit dieser Option fungiert Puppet als Repository für Codeelemente und speichert diese als Ressourcen. So lässt sich Puppet etwa in Visual Studio Code integrieren, um Module direkt im Editor zu schreiben und zu testen. Ebenso unterstützen GitHub und GitLab die Versionsverwaltung von Puppet-Code, während Jira und ServiceNow eine Anbindung für automatisiertes Change-Management und Compliance bieten. Darüber hinaus ermöglicht Puppet die Zusammenarbeit mit Docker, Kubernetes und Terraform sowie die Verwaltung von Ressourcen in AWS, Azure und Google Cloud. Puppet hat mit Organisationen wie dem Visual-Studio-Team von Microsoft zusammengearbeitet, um diese Integrationen zu verbessern.
Als DevOps-Tool bietet Puppet eine recht umfassende Möglichkeit, Prozesse von Entwicklern bis hin zu Betriebs- und Helpdesk-Mitarbeitern zu erweitern. Es ist ausreichend code- und plattformunabhängig und funktioniert zusammen mit bestehenden Entwicklungs- und Betriebssystemen. Es wird auf dem Markt von kommerziellen und kommunalen Einrichtungen breit unterstützt. Es gehört zu den führenden Tools für die Bereitstellung, Automatisierung, Überwachung, Verwaltung und Berichterstattung von Workloads in einer modernen DevOps-Umgebung.
Konfigurationsmanagement mit Puppet
Puppet ist ein weit verbreitetes Konfigurationsmanagement-Tool, das Infrastruktur als Code abbildet und wiederholbare, konsistente Deployments ermöglicht. Über deklarative Manifeste, Fakten und Module wird der gewünschte Systemzustand definiert und automatisiert umgesetzt. Hiera und PuppetDB unterstützen flexible Konfigurationsdatenverwaltung und schnelle Datenabfragen. Die aktuelle Version 8.10.x (2025) bietet erweiterte Compliance-, Sicherheits- und Orchestrierungsfunktionen für moderne DevOps-Umgebungen.