beatpavel - Fotolia

Master und Node: Die Puppet-Architektur zur Konfigurationsverwaltung

Die Puppet-Architektur nutzt zur Konfigurationsverwaltung ein Client-Server-Modell. So lassen sich auch komplexe Konfigurationen relativ einfach definieren und durchsetzen.

Puppet ist eines der populärsten Tools zur Konfigurationsverwaltung und ermöglicht zum Beispiel die automatisierte Bereitstellung virtueller Maschinen mit vorkonfiguriertem Zustand, was das Server-Management wesentlich vereinfacht.

Puppet-Anwender beschreiben in der Konfigurationssprache von Puppet zunächst den gewünschten Zielzustand einer virtuellen Maschine, der anschließend von Puppet durchgesetzt wird – selbst wenn anschließend aus Versehen manuelle Änderungen an der virtuellen Maschine vorgenommen werden.

Der große Vorteil bei diesem Konfigurations-Management ist die hohe Skalierbarkeit: Puppet funktioniert sowohl für eine einzelne virtuelle Maschine als auch für hunderte VMs eines Data Centers.

Ein Blick auf die Puppet-Architektur

Puppet verwendet zur Konfigurationsverwaltung ein Client-Server-Modell, in dem der Puppet Master als zentraler Verwaltungsserver der Puppet-Infrastruktur dient und beispielsweise die Manifest-Dateien speichert, die den Zielzustand der verwalteten Clients beschreiben. Auf den Clients, auch Puppet Nodes genannt, wird kontinuierlich ein Puppet-Prozess ausgeführt, den die Manifest-Datei auf dem Puppet Master mit der Konfiguration des Nodes abgleicht und bei Abweichungen Veränderungen am Client vornimmt. Innerhalb der Puppet-Architektur initiiert der Puppet Node den regelmäßigen Abgleich mit der Manifest-Datei, was beispielsweise alle 30 Minuten erfolgen kann.

Die Nodes führen den facter-Befehl aus, sobald eine Sitzung gestartet wird. Dieser Teil der Puppet-Konfiguration sammelt Daten über den aktuellen Zustand des Clients und sendet diesen an den Master. Auf Basis dieser Informationen erstellt der Master einen Zustandskatalog für jeden individuellen Node. Dieser Katalog beschreibt die durchzuführenden Aufgaben für einen spezifischen Node. Puppet erstellt eine idempotente Konfiguration, indem der Zielzustand in einer absoluten Art und Weise definiert wird. Egal wie oft der Katalog auf einen Node angewandt wird, das Ergebnis wird immer der gleiche Zielzustand sein.

Sobald der Katalog auf dem Master kompiliert wurde, wird er zum entsprechenden Node übertragen, woraufhin der gewünschte Zielzustand konfiguriert wird. Am Ende dieses Prozesses berichtet der Node alle durchgeführten Konfigurationsänderungen an den Master. Der Master wiederum kennt alle durchgeführten Änderungen und kann diese Informationen Administratoren oder zusätzlichen Tools zur Verfügung stellen.

Mit Puppet verwaltbare Objekte

Die Puppet-Architektur verwaltet praktisch jeden Aspekt der Node-Konfiguration, also beispielsweise Anwender, Dateien, Pakete und Services. So lässt sich also vordefiniert festlegen, dass ein Anwender angelegt (oder entfernt) wird oder ein Service gestartet oder angehalten wird. Hierfür verwendet Puppet eine eigene Konfigurationssprache, die nach dem folgenden einfachen Beispiel funktioniert:

 

user { 'bob':

     ensure => 'absent',

}

 

Dieses Beispiel würde sicherstellen, dass auf keinem Node-System, auf das die Manifest-Datei angewendet wird, ein Anwender bob vorhanden wäre. Sofern ein Administrator oder ein beliebiger Prozess einen solchen Anwender anlegen würde, würde er von Puppet wieder entfernt werden, sobald der Node seinen Master kontaktiert. Ein weiteres Beispiel definiert, dass eine bestimmte Datei vorhanden sein soll und welche Eigenschaften diese besitzen soll:

 

file { '/srv/www/index.html';

     ensure => 'file',

     owner => 'root',

     group => 'root',

     mode => '0640',

}

 

Die Puppet-Architektur verwaltet den Zustand bestimmter Ressourcen, wie bereits erwähnt etwa von Anwendern, Services, Dateien oder Paketen. Führt man den Befehl puppet-resource –types auf einem Node aus, so erhält man eine Liste aller dort verfügbaren Ressourcen, die per Puppet verwaltet werden können. In einem weiteren Schritt könnte dann mit exec ein Befehl auf diese Ressourcen angewendet werden, während notify Log-Dateien schreibt.

Auch wenn sich manche Ressourcen recht einfach beschreiben lassen, so sind für komplexe Puppet-Umgebungen doch auch komplexere Abhängigkeiten notwendig. Über diese Abhängigkeiten lässt sich beispielsweise beschreiben, wie sich bestimmte Ressourcen zueinander verhalten. Damit können Administratoren ihren Code wesentlich effizienter gestalten und Bedingungen definieren, durch die Konfigurationsanpassungen nur durchgeführt werden, wenn bestimmte Voraussetzungen erfüllt sind.

Konfigurationsverwaltung mit Ansible, Salt und Chef:

Die wichtigsten SaltStack-Befehle zur Minion-Verwaltung

Überblick über die Konfigurationsverwaltung mit Chef

Die Architektur der Konfigurationsverwaltung mit Ansible

Die Ressourcen einer Puppet-Umgebungen werden über die Manifest-Datei definiert, die typischerweise die Erweiterung .pp trägt. Puppet-Manifeste können entweder über einen Text-Editor oder aber über funktionsreichere Tools wie Geppetto inklusive grafischer Benutzeroberfläche erstellt werden.

Die große Stärke der Puppet-Architektur liegt in der einfachen Skalierbarkeit. Damit profitieren auch kleine IT-Abteilungen mit nur einer Betriebssystemumgebung bereits von Puppet, vor allem aber große Enterprise-Umgebungen, in denen unterschiedlichste Betriebssysteme zum Einsatz kommen. Hier spielt Puppet seine Stärke der deskriptiven Konfigurationsverwaltung aus, bei denen die idempotenten Definitionen die Einhaltung der Puppet-Manifeste sicherstellt.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Artikel wurde zuletzt im April 2017 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Virtuelle Maschinen: Bereitstellung und Konfiguration

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

Close