thumb

Mit «Puppet» automatisiert der Linux/Unix- Systemadministrator Konfiguration und Betrieb beliebig grosser Server-Umgebungen.

Viele IT-Abteilungen verwalten ihre Server so, wie die Automobilindustrie Anfang des letzten Jahrhunderts Fahrzeuge herstellte: Eine einzelne Person baute ein Auto zusammen und kümmert sich anschliessend auch um dessen Service. Da dieses Vorgehen teuer ist, führten fast alle Autohersteller die Fliessbandarbeit ein. So können sie heute mit standardisierten Werkzeugen Massanfertigung in grossen Stückzahlen und damit individuelle Fahrzeuge zu tiefen Kosten anbieten. Die gleichen Möglichkeiten bieten sich bei der Handhabung von IT-Umgebungen, in denen Fachleute zahlreiche Server konfigurieren und betreiben müssen. Trotz der Unterschiede finden sich immer wieder automatisierbare Gemeinsamkeiten.

Seit einigen Jahren entwickelt die Firma Reductivelabs ein quelloffenes Konfigurationsmanagement- Werkzeug namens Puppet, welches genau diese Bedürfnisse adressiert. Es beschreibt die Systemumgebungen in einer deklarativen Sprache, in sogenannten Manifests. Und Puppet sorgt auch dafür, dass sich die einmal aufgesetzten Systeme jederzeit in diesem definierten Status befinden. Dabei spielt es keine Rolle, ob es sich um eine homogene Umgebung auf der Basis einer einzigen Linux-Distribution handelt oder um ein heterogenes Umfeld mit verschiedenen Unix-artigen Systemen. Puppet weiss, wie es auf dem jeweiligen System ein bestimmtes Paket installieren muss, und prüft hinterher, ob dieses auch korrekt installiert und konfiguriert wurde. Wenn nicht, korrigiert Puppet den fehlerhaften Zustand.

Die Eigenschaften der Puppet-eigenen Sprache ermöglichen es, allgemeine Definitionen mit geringem Aufwand an spezielle Bedürfnisse anzupassen, Zusammengehörendes zu gruppieren oder Abhängigkeiten zu modellieren. So bleiben komplexe Umgebungen übersichtlich, und der Systemadministrator erspart sich repetitive Tätigkeiten. Er schreibt die Konfiguration beispielsweise eines Webservers genau ein Mal. Die zentrale Instanz, der Puppetmaster, wird dann die Puppen spielen lassen und die Konfiguration auf den ausgewählten Systemen anwenden. Dabei werden Abhängigkeiten eingehalten, betroffene Dienste neu gestartet, die Überwachung für installierte Dienste auf dem zuständigen Server eingetragen und so weiter. Der Systemadministrator ist in der Modellierung seiner Umgebung völlig frei. Weitere Funktionen von Puppet erlauben es ihm, eine neue Konfiguration zuerst in der Testumgebung zu erhärten und anschliessend auf die Produktivsysteme anzuwenden.

Rund um Puppet hat sich eine schnell wachsende Community entwickelt. Zahlreiche Personen stellen Module für verschiedene Server-Dienste bereit. Da Reductivelabs einen offenen Entwicklungsprozess verfolgt, beteiligen sich immer mehr Fachleute daran und implementieren neue Funktionen direkt in Puppet. Ein erst kürzlich eingeführtes Feature generiert direkt aus den Puppet Manifests eine HTML-Dokumentation. Damit kann der Systemadministrator eine Dokumentation erstellen, welche dem aktuellen Stand seiner Systeme entspricht.

Mit der Virtualisierung und der damit verbundenen Zunahme von zu administrierenden und zu integrierenden Systemen werden Werkzeuge wie Puppet für die tägliche Arbeit unverzichtbar. Cloud Computing wird solchen Tools nochmals Schub verleihen. Dann müssen Systemadministratoren ihre Serverumgebung noch flexibler verwalten, weil die Anzahl wie auch die Vielfalt der Systeme rasant ansteigt.

Der Autor ist Linux- System-Ingenieur beim Open- Source-Dienstleister Puzzle ITC.

111-111marcelhaerry.jpg
Marcel Härry