Konfigurationsmanagement ist die Praxis, den Zustand von Systemen zentral, beschrieben und wiederholbar zu verwalten. Statt auf jedem Server Einstellungen von Hand zu ändern, definiert man den Sollzustand in einer Datei; ein Werkzeug setzt ihn durch und erkennt Abweichungen. Ziel ist die Abkehr von gewachsenen Einzelsystemen.
Die zentralen Begriffe
- Deklarativ: Beschrieben wird das Ergebnis („Paket nginx ist installiert, Dienst läuft, Port 80 offen“), nicht der Weg. Das Werkzeug entscheidet, welche Schritte nötig sind.
- Idempotenz: Ein zweiter Durchlauf ändert nichts mehr. Das ist die wichtigste Eigenschaft überhaupt – sie macht wiederholtes Anwenden gefahrlos.
- Inventar: die Liste der verwalteten Systeme, oft gruppiert („webserver“, „datenbank“, „standort-hamburg“).
- Rollen: wiederverwendbare Pakete von Einstellungen, etwa „nginx-rolle“ oder „postgres-rolle“, die sich kombinieren lassen.
- Bericht: Was hat sich geändert, was war schon korrekt? Ohne Bericht ist ein Lauf nicht nachvollziehbar.
Gängige Werkzeuge und ihre Eigenarten
- Ansible: agentenlos über SSH, Playbooks in YAML. Niedrige Einstiegshürde, läuft von einem Steuerrechner aus. Bei sehr vielen Hosts wird die serielle Verarbeitung zum Engpass.
- Puppet: Agent-basiert, eigene Sprache. Kataloge werden zentral kompiliert und auf die Agents verteilt. Stark bei sehr großen, langlebigen Umgebungen.
- Chef: Agent-basiert, Konfiguration in Ruby. Kochbuch-Metapher („Recipes“, „Cookbooks“) und flexible Programmlogik.
- SaltStack: Agent-basiert mit sehr schneller Nachrichtenvermittlung; nutzt Python und YAML und eignet sich für Massenoperationen und Ereignissteuerung.
Beispiel: rollenorientierte Struktur
inventory/
production.ini # Gruppen und Hosts
roles/
nginx/
tasks/main.yml
templates/nginx.conf.j2
handlers/main.yml
defaults/main.yml
site.yml # welche Rolle auf welche Gruppe
group_vars/
webserver.yml # Werte je Gruppe
host_vars/
web01.yml # Werte je Host
Die Trennung von Rollen (was zu tun ist) und Variablen (mit welchen Werten) ist der Schlüssel zu Wiederverwendung: Dieselbe Rolle versorgt Test- und Produktionssysteme, nur die Werte unterscheiden sich.
Meldewege und Prüfung
Ein Werkzeug, das Konfiguration durchsetzt, muss seinen Erfolg auch melden. Dry-Run-Modi (--check bei Ansible, --noop bei Puppet) zeigen Änderungen an, ohne sie auszuführen; Änderungsberichte müssen auswertbar sein, damit ein ungeplanter Neustart eines Dienstes auffällt. Diese Berichte gehören in die Überwachung – nicht in eine Datei, die niemand liest.
Zusammenspiel mit anderen Werkzeugen
Konfigurationsmanagement beschreibt was auf der Maschine passiert; Terraform beschreibt, welche Maschinen es gibt (Infrastructure as Code). Beide ergänzen sich: Terraform erzeugt die Instanz, Cloud-init macht sie erreichbar, Ansible oder ein anderes Werkzeug konfiguriert sie – oder die Konfiguration steckt schon im Packer-Abbild. Je unveränderlicher die Umgebung, desto weniger Arbeit bleibt für das laufende Konfigurationsmanagement.
Verwandte Grundlagen: Ansible, Terraform, Unveränderliche Infrastruktur, GitOps.