Puppet ist eine der ältesten IaC-Anwendungen und als solche eine stabile und bewährte Lösung. Was sind seine Eigenschaften?
Puppet ist eines der wichtigsten Werkzeuge, die für die Verwaltung von sogenannten IaC (Infrastructure as Code) zur Verfügung stehen.
☝️Zur Erinnerung: IaC ist ein Ansatz, bei dem ein Systemtechniker eine IT-Infrastruktur mithilfe von vordefinierten Konfigurationsskripten verwaltet.
Was ist Puppet?
Puppet wurde 2005 von dem Berater Luke Kanies entwickelt, der eine wichtige Rolle bei der Entwicklung von IaC spielte. Von Anfang an war es das Ziel, Systemadministratoren bei der Automatisierung der Verwaltung der Serverinfrastruktur zu helfen.
Wie funktioniert Puppet?
Puppet arbeitet mit einem „Manifest“, also einem Skript, das angibt, was getan werden muss:
- Ausführen von Befehlen;
- Bestimmte Dienste starten ;
- Installieren von Software ;
- etc.
In einem Manifest gibt der Systemadministrator eine bestimmte Liste von Anweisungen an – wie ein bestimmter Server eingerichtet werden soll etc. – Puppet sorgt dann dafür, dass diese ausgeführt werden.
Ein einmal erstelltes Manifest kann wiederverwendet werden, um es auf andere Server anzuwenden. Wenn sich etwas an der Infrastruktur ändert, kann das Manifest einfach aktualisiert werden.
Hauptmerkmale von Puppet
Als einer der Pioniere der IaC-Bewegung hat Puppet mehrere Standards in diesem Bereich gesetzt.
Deklarative Sprache
Man muss nur beschreiben, wie man das System am Ende haben möchte. Puppet kümmert sich darum, die dafür notwendigen Prozeduren durchzuführen.
Agenten-/Meister-Modell
Puppet erfordert, dass auf jedem Knoten (Einzelcomputer) ein Agent installiert ist, der die Konfigurationen vom „Master“-Computer empfängt.
Berichtssystem
Die Möglichkeit, detaillierte und versionierte Berichte zu erstellen, erleichtert Audits.
Factor
Dieses in Puppet integrierte Tool sammelt detaillierte Informationen über Knoten und erleichtert die Anpassung an bestimmte Konfigurationen.
Vordefinierte Module
Die Puppet Forge-Bibliothek beherbergt viele vorgefertigte Module.
Entwicklungsgrad der Software
Aufgrund seiner langen Geschichte ist Puppet ein stabiles, gut dokumentiertes Werkzeug mit einer guten Community, die sich gegenseitig hilft.
Nutzungsbeispiele
Angenommen, ein Unternehmen betreibt Hunderte von Servern und jeder muss unbedingt genauso wie die anderen konfiguriert werden. Ein einziges Manifest wird den Zweck erfüllen.
Du musst eines Tages eine bestimmte Software auf allen Servern des Unternehmens installieren? Ein Puppet-Skript kann diesen globalen Vorgang verwalten und sicherstellen, dass alle mit der exakt gleichen Version der Software arbeiten.
Ein Unternehmen betreibt sehr unterschiedliche Computerumgebungen: Einige sind dem Verkauf von Artikeln gewidmet, andere der Forschung und wieder andere der Entwicklung von Programmen. Es genügt, Puppet-Manifeste zu schreiben, die auf jede Umgebung zugeschnitten sind, und sie jedes Mal einzeln zu aktualisieren, wenn es nötig ist.
Puppet im Vergleich zu anderen IaC-Produkten
Hier sind einige der Hauptkonkurrenten von Puppet im IaC.
Ansible
Im Gegensatz zu Pupplet zeichnet sich Ansible durch seinen „agentenlosen“ Ansatz aus (es muss kein Agent auf den Zielservern installiert werden). Ansible wird manchmal Puppet vorgezogen, wenn es um schnelle und kleine Einsätze geht, während Pupper für komplexere und langfristige Einsätze gewählt wird.
Chef
Während Puppet Manifeste verwendet, bringt Chef die Administratoren dazu, die Infrastruktur mithilfe von „Rezepten“ zu beschreiben, die in der Programmiersprache Ruby definiert sind. Entwickler, die an diese Sprache gewöhnt sind, können also davon profitieren.
Salt (oder SaltStack)
Dieses Tool, das in der Lage ist, große Infrastrukturen zu verwalten, wird oft für seine schnelle Kommunikation mit entfernten Servern gelobt – es ermöglicht die Ausführung von Echtzeitbefehlen in großem Maßstab.
Terraform
Wie Puppet basiert es auf einem sogenannten „deklarativen“ Ansatz: Der Administrator beschreibt den gewünschten Zustand und Terraform kümmert sich darum, ihn zu erreichen. Seine Spezialität ist die Verwaltung von Cloud Computing-Infrastrukturen.