Puppet erklärt: DevOps automatisieren und Bereitstellung beschleunigen
In DevOps möchten Sie so viele Aufgaben wie möglich automatisieren. Das manuelle Konfigurieren von Umgebungen dauert bei umfangreichen Infrastrukturen Wochen. Wenn alles eingerichtet ist, löschen Sie Brände, statt neue effektive Lösungen zu implementieren – wie Rancher-Server.
Puppet hilft, manuelle Aufgaben zu automatisieren, um Systeme schnell bereitzustellen und Applikationen zu deployen. Dynamisches Infrastrukturmanagement steht im Kern von Puppet.
Dieser Artikel erklärt, was Puppet ist, welche Probleme es löst und wie Sie Puppet als DevOps-Team erfolgreich zur Automatisierung manueller Jobs einsetzen.
Was ist Puppet?
Puppet ist ein IaC-Tool (Infrastructure as Code) zur Verwaltung mehrerer Server. In Ruby geschrieben (primär), läuft Puppet auf mehreren Unix-ähnlichen Systemen und unterstützt auch Windows.
Die Software ist hochgradig ausgereift, mit der Erstveröffentlichung 2005. Puppet kommt als kostenlose Open-Source-Software, und eine proprietäre Version ist auch für komplexe Infrastrukturen verfügbar.
Wofür wird Puppet verwendet?
Puppet automatisiert Server-Konfigurationsmanagement und Deployment. Die Software ermöglicht es, Fäden zu ziehen und Zustände auf mehreren Systemen gleichzeitig zu verwalten – der Ansatz reduziert manuelles Setup und Management einzelner Server.
Puppet definiert den gewünschten Zustand für das System, statt zu definieren, wie man dorthin gelangt. Die Konfiguration gilt für verschiedene Plattformen und Geräte und erhält den Zustand über die Infrastruktur hinweg. Insgesamt gibt es weniger Bedarf für Systemadministratoren, Brände zu löschen, sodass das DevOps-Team neue und bessere Serverlösungen implementieren kann.
Puppet Configuration Management
Automatisierungsskripte helfen bei repetitiven Aufgaben wie der Installation und Konfiguration von Servern. Bei umfangreicher Infrastruktur skalieren Automatisierungsskripte jedoch nicht.
Configuration Management bietet eine Lösung für umfangreiche Infrastrukturkonfigurationen. Die Praktiken gelten als Rückgrat von DevOps und ermöglichen häufigere und zuverlässigere Software-Releases in einer etablierten DevOps-Pipeline.
Server-Konfigurationsmanagement erfolgt dank des Infrastructure-as-Code-Ansatzes. Im Fall von Puppet liegt der Server-Management-Code in Puppet-Code, der Ruby ähnelt. Die Sprache ist deklarativ und beschreibt eine modellbasierte Konfiguration.
Wie funktioniert Puppet?
Puppet nutzt einen Client-Server-Ansatz und besteht aus folgenden Systemen:
- Der Puppet Master ist ein Server mit dem Puppet Master Daemon, der entscheidende Systeminformationen für alle Nodes verwaltet, die Manifests nutzen.
- Die Puppet Agents sind Nodes mit installiertem Puppet und laufendem Puppet Agent Daemon.
Die folgenden Abschnitte erklären die wesentlichen Puppet-Elemente und Terminologie, die klären, wie Puppet funktioniert.
Puppet Topologie und Architektur
Puppet nutzt eine Client/Server-Architektur bestehend aus Puppet Master und Puppet Agents. Puppet Agents nutzen Pull-Modus, um den Master abzufragen und node-spezifische sowie site-spezifische Konfigurationsinfos abzurufen.
Die Topologie durchläuft folgende Schritte:
- Ein Node mit laufendem Puppet Agent Daemon sammelt alle Informationen (Facts) über sich selbst, und der Agent sendet die Facts an den Puppet Master.
- Der Puppet Master nutzt die Daten, um einen Katalog zu erstellen, wie der Node konfiguriert sein sollte, und sendet ihn zurück an den Puppet Agent.
- Der Puppet Agent konfiguriert sich basierend auf dem Katalog und berichtet zurück an den Puppet Master.
Puppet nutzt ein Utility namens Facter, um Systeminformationen zu ermitteln. Das Tool wird standardmäßig mit der Puppet-Installation mitgeliefert.
Puppet Master
Der Puppet Master ist ein Daemon, der auf einem dedizierten Server läuft. Der Puppet Master ist die Informationsquelle und Konfigurationsautorität als Server-Node. Der Master sendet Anweisungen an alle Agent-Nodes und überwacht die Systemkonfiguration.
Der Puppet Master ist für folgende Aufgaben verantwortlich:
- Erstellung eines Katalogs für die Agents.
- Dateiübertragungen von einem File Server an Agents.
- Annahme von SSL-Zertifikaten von Agents.
- Speicherung von Konfigurations-Manifests.
Puppet nutzt Identity Access Management durch einen dedizierten User und Group, was Sicherheit bietet und nur die erforderlichen Informationen an Agents preisgibt. Allerdings erfordern nicht alle Aktionen erhöhte Privilegien.
Puppet Agents
Der Puppet Agent ist ein Puppet Daemon, der auf einem System oder Node läuft. Agents haben bestimmte Privilegien auf dem Node, um Konfigurationskataloge anzuwenden, die vom Puppet Master gezogen werden.
Um Kommunikationsberechtigungen zu erhalten, fordert ein Agent beim ersten Kontakt mit dem Master ein SSL-Zertifikat an. Das Zertifikat wird jedes Mal geprüft, wenn der Agent den Master um Konfigurationsupdates bittet, bevor die Informationen gesendet werden. Ein Master authentifiziert sich auch bei den Agents, um korrekte Konfigurationsinfos zu gewährleisten.
Puppet Agents modifizieren die Systemkonfiguration und benötigen Root-Rechte, um Aufgaben auszuführen.
Puppet Verschlüsselung und Kommunikationssicherheit
Puppet nutzt OpenSSL für Kommunikation und Sicherheit. Basierend auf SSL- und TLS-Protokollen verwendet Puppet Standard-SSL/TLS-Verschlüsselung und SSL-Zertifikate für Agent/Master-Authentifizierung und -Verifizierung. Zusätzlich verschlüsselt Puppet den Datenverkehr zwischen Agents und Servern mit SSL/TLS, wobei SHA-256 als Standard-Hash verwendet wird.
Verschlüsselungsmethoden in Puppet gewährleisten:
- Master/Agent-Authentifizierung und -Verifizierung.
- Verhinderung von Datenschutzverletzungen zwischen Master und Agents.
Der Master generiert sein eigenes CA-Zertifikat, privaten Schlüssel, CRL (Certificate Revocation List) und ein Server-Zertifikat. Das Server-Zertifikat wird an Agents gesendet, um SSL- und TLS-Kommunikation zu ermöglichen.
Vorteile von Puppet und warum Sie es nutzen sollten
Puppet ist eines der langlebigsten und beliebtesten Configuration-Management-Automatisierungstools. Hier sind fünf Vorteile, die gute Gründe geben, Puppet einzusetzen.
1. Open Source
Puppet ist Open Source, was die Technologie erweiterbar macht. Benutzerdefinierte Bibliotheken und Module bereichern individuelle Projekte für Ihren Use Case.
Open Source bringt auch den Vorteil einer aktiven Community. Zahlreiche Diskussionen, Foren und Experten stehen bereit, um zu helfen und Fragen zu beantworten.
2. Ressourcen-Abstraktion
Konfigurationsaufgaben sind repetitiv, und dieselben Schritte sind oft auf Servern mit unterschiedlichen Betriebssystemen über plattformspezifische Schritte erforderlich. Sich alle Befehle zu merken, ist unmöglich.
Facter hilft Puppet, die Spezifika zu ermitteln und Abstraktion zu erreichen. Systemspezifische Daten und OS-Details sind Puppet dank Facter bestens vertraut.
3. Idempotenz
Redundante Konfigurationen sind ein komplexes Thema bei der Arbeit mit zahlreichen Servern, und Puppet zielt darauf ab, nur Änderungen anzuwenden, die das System beeinflussen. Wenn der gewünschte Zustand der Infrastruktur erreicht ist, führt Puppet die Befehle nicht aus. Diese Puppet-Funktion nennt sich Idempotenz, was Redundanz reduziert und Effizienz erhöht.
4. Cross-Plattform
Puppet deckt eine breite Palette von Plattformen ab, was die Anzahl der Server im Konfigurationsautomatisierungsprozess erhöht. Das Tool funktioniert auf Windows, OS X, Debian-basierten Systemen, Fedora, Gentoo, RHEL und Solaris.
5. Flexibel
Die Puppet-Sprache beinhaltet eine Möglichkeit, Anweisungen zu überschreiben und Ausnahmen für verschiedene Szenarien zu schaffen. Puppet unterstützt auch das Planen spezifischer Wartungsaktionen periodisch.
Fazit
Puppet ist ein mächtiges Tool für das Management von Konfigurationen und Server-Aufgaben und eine ausgezeichnete Wahl für stabile Server, die sich nicht dynamisch oder häufig ändern.
Um zu sehen, wie Puppet im Vergleich zu anderen ähnlichen Technologien abschneidet, lesen Sie unseren Vergleichsartikel: Ansible vs. Terraform vs. Puppet.
Cloud Computing
- Diamantdrehen: Präzisionsbearbeitung für fortschrittliche Optik und mehr
- Ultraschallbearbeitung erklärt: Prozess, Vorteile und Limitationen
- Rotationsgießen: Kompletter Leitfaden zur Herstellung hohler Kunststoffteile
- Chrombeschichtung erklärt: Prozess, Schritte und Anwendungen
- Was ist ein Stempelwerkzeug? Ein essenzieller Leitfaden für Holzwerker
- Reibbohren erklärt: Wärme-erzeugtes Schneiden für schnellere, sauberere Löcher
- Punktschweißen erklärt: Prozess, Vorteile und Nachteile
- Verzinktes Eisen erklärt: Wie Zinkbeschichtung Stahl langfristig schützt
- Re-Platforming in der Cloud: Was es ist und wie es effiziente Migration vorantreibt
- Was ist A2-Stahl? Eine vielseitige, kosteneffektive Werkzeugstahlsorte für Industrie und Holzbearbeitung