Marionette - Übersicht

Puppet ist ein Konfigurationsmanagement-Tool, das von Puppet Labs entwickelt wurde, um das Infrastrukturmanagement und die Konfiguration zu automatisieren. Puppet ist ein sehr leistungsfähiges Werkzeug, das beim Konzept der Infrastruktur als Code hilft. Dieses Tool ist in der Ruby DSL-Sprache geschrieben und hilft bei der Konvertierung einer vollständigen Infrastruktur im Codeformat, die einfach verwaltet und konfiguriert werden kann.

Puppet folgt dem Client-Server-Modell, bei dem ein Computer in einem Cluster als Server fungiert, der als Puppet Master bezeichnet wird, und der andere als Client, der als Slave auf Knoten bezeichnet wird. Puppet kann jedes System von der ersten Konfiguration bis zum Ende der Lebensdauer einer bestimmten Maschine von Grund auf neu verwalten.

Eigenschaften des Puppensystems

Im Folgenden sind die wichtigsten Funktionen von Puppet aufgeführt.

Idempotenz

Puppet unterstützt Idempotenz, was es einzigartig macht. Ähnlich wie bei Chef kann in Puppet dieselbe Konfiguration sicher mehrere Male auf demselben Computer ausgeführt werden. In diesem Ablauf prüft Puppet den aktuellen Status des Zielcomputers und nimmt nur dann Änderungen vor, wenn sich die Konfiguration spezifisch ändert.

Idempotenz hilft bei der Verwaltung einer bestimmten Maschine während ihres gesamten Lebenszyklus, angefangen von der Erstellung der Maschine über Konfigurationsänderungen in der Maschine bis hin zum Ende der Lebensdauer. Die Puppet Idempotency-Funktion ist sehr hilfreich, um die Maschine jahrelang auf dem neuesten Stand zu halten, anstatt sie bei Konfigurationsänderungen mehrmals neu zu erstellen.

Plattformübergreifend

In Puppet kann mithilfe von Resource Abstraction Layer (RAL), das Puppet-Ressourcen verwendet, auf die angegebene Systemkonfiguration abgezielt werden, ohne sich um die Implementierungsdetails und die Funktionsweise des Konfigurationsbefehls im System zu kümmern, die in der zugrunde liegenden Konfiguration definiert sind Datei.

Marionette - Workflow

Puppet verwendet den folgenden Workflow, um die Konfiguration auf das System anzuwenden.

  • In Puppet sammelt der Puppet-Meister zunächst die Details der Zielmaschine. Unter Verwendung des Faktors, der auf allen Puppet-Knoten vorhanden ist (ähnlich wie bei Ohai in Chef), werden alle Konfigurationsdetails auf Maschinenebene abgerufen. Diese Daten werden gesammelt und an den Puppenmeister zurückgesendet.

  • Anschließend vergleicht der Puppet Master die abgerufene Konfiguration mit definierten Konfigurationsdetails. Mit der definierten Konfiguration erstellt er einen Katalog und sendet ihn an die Ziel-Puppet-Agenten.

  • Der Puppet-Agent wendet dann diese Konfigurationen an, um das System in einen gewünschten Zustand zu bringen.

  • Sobald sich der Zielknoten in einem gewünschten Zustand befindet, sendet er einen Bericht an den Puppet-Master zurück, der dem Puppet-Master hilft, zu verstehen, wo sich der aktuelle Status des Systems befindet, wie im Katalog definiert.

Marionette - Schlüsselkomponenten

Im Folgenden sind die Schlüsselkomponenten von Puppet aufgeführt.

Marionettenressourcen

Marionettenressourcen sind die Schlüsselkomponenten für die Modellierung einer bestimmten Maschine. Diese Ressourcen haben ein eigenes Implementierungsmodell. Puppet verwendet dasselbe Modell, um eine bestimmte Ressource in den gewünschten Zustand zu versetzen.

Anbieter

Anbieter sind im Grunde genommen Erfüllungsgehilfen einer bestimmten Ressource, die in Puppet verwendet wird. Beispielsweise sind die Pakettypen 'apt-get' und 'yum' für die Paketverwaltung gültig. Manchmal ist auf einer bestimmten Plattform mehr als ein Anbieter verfügbar. Obwohl jede Plattform immer einen Standardanbieter hat.

Manifest

Manifest ist eine Sammlung von Ressourcen, die innerhalb der Funktion oder Klassen gekoppelt sind, um ein beliebiges Zielsystem zu konfigurieren. Sie enthalten eine Reihe von Ruby-Code, um ein System zu konfigurieren.

Module

Das Modul ist der Schlüsselbaustein von Puppet, der als Sammlung von Ressourcen, Dateien, Vorlagen usw. definiert werden kann. Sie können problemlos auf verschiedene Arten von Betriebssystemen verteilt werden, die so definiert sind, dass sie denselben Geschmack haben. Da sie leicht verteilt werden können, kann ein Modul mit derselben Konfiguration mehrfach verwendet werden.

Vorlagen

Vorlagen verwenden Ruby-Ausdrücke, um den benutzerdefinierten Inhalt und die variable Eingabe zu definieren. Sie werden verwendet, um benutzerdefinierte Inhalte zu entwickeln. Vorlagen werden in Manifesten definiert und an einen Ort im System kopiert. Wenn Sie beispielsweise httpd mit einem anpassbaren Port definieren möchten, können Sie den folgenden Ausdruck verwenden.

Listen <% = @httpd_port %>

Die Variable httpd_port wird in diesem Fall im Manifest definiert, das auf diese Vorlage verweist.

Statische Dateien

Statische Dateien können als allgemeine Dateien definiert werden, die manchmal zur Ausführung bestimmter Aufgaben erforderlich sind. Sie können einfach mit Puppet von einem Ort an einen anderen kopiert werden. Alle statischen Dateien befinden sich im Dateiverzeichnis eines Moduls. Jede Manipulation der Datei in einem Manifest erfolgt über die Dateiressource.