Funktionsweise

Aufbau

Puppet besteht an sich aus mehreren verschiedenen Komponenten.

  • Puppet Master: Master Service mit dem sich die Server (Agents) verbinden
  • Puppet DB: Sammelt von Puppet generierte Daten (für Reporting)
  • Puppet Dashboard: Administrationsoberfläche für Reports und Inventarisierungsdaten. Hier lässt sich der Konfigurationsstatus Ihrer gesamten Systemlandschaft überblicken
  • Puppet Fileserver: Integrierter Dateiserver für den Datenaustausch von (Konfigurations-) Dateien zwischen Master und Agent

Definition der Konfiguration

Die gewünschte Konfiguration eines Systems wird durch ein oder mehrere .pp-Dateien vorgenommen. Die Syntax ist hierbei an Ruby angelehnt, ist aber mit grundlegenden Shellscripting Kenntnissen sehr leicht zu verstehen. Die Konkurrenzlösung Chef bietet beispielsweise eine äußerst komplizierte Syntax, welche tiefere Programmierkenntnisse erfordert.

Für viele Lösungen (u.a. Apache, PHP, MySQL, Apt, Yum) stehen hierbei auf der Puppet Forge fertige kostenlose Module bereit. Eine Vielzahl hiervon werden offiziell unterstützt und getestet, wodurch Sie sich für den produktiven Einsatz eignen.

Abgleich / Konfigurationsmanagement

Auf jedem Serversystem ist ein Agent installiert. Dieser läuft als Systemdienst und gleicht sich regelmäßig (Standard: alle 30 Minuten) mit dem Master ab.

Dem Zielsystem werden dabei einzelne Klassen bzw. Module zugeordnet. Zusammengefasst werden diese als Rollen bezeichnet.

Beispiele hierfür sind Webserver, Datenbankserver, Fileserver.

Sobald eine Änderung an den Vorlagen für die Rollen durchgeführt wird, erfolgt die Übernahme der Änderungen auf allen abhängigen Systemen. Hierbei lassen sich die Änderungen auch ohne Veränderung des Systems simulieren, um Konflikte frühzeitig erkennen zu können.

Ein ausgeklügeltes Namensschema kann Ihnen hierbei viel Arbeit abnehmen. So lässt sich in den Definitionen auch mit Wildcards und Regular Expressions arbeiten. Bei einer sauberen Gliederung der Systeme in Rollen (z.B. Webserver), Status (Test, Produktion) und Applikation (z.B. WordPress) lässt sich die Rollenzuweisung komplett automatisieren.

Zusätzlich besteht die Möglichkeit Puppet ohne Master zu betreiben. Eine zentrale Verwaltung ist somit aber nicht möglich, weshalb sich dies z.B. für temporäre Tests gut eignet. Den Konfigurationsprozess kann man sich dabei wie bei einem Shellskript vorstellen. Hierzu wird nur die Installation des Agents auf dem Zielserver benötigt.