Automatisiertes Konfigurationsmanagement

Was ist Ansible?

Ansible ist ein Werkzeug für Konfigurationsmanagement und Automatisierung. Es spricht Zielsysteme ohne installierten Agenten über SSH an und beschreibt den gewünschten Zustand in YAML-Dateien, den Playbooks.

Wenn dieselbe Änderung auf zwanzig Servern landen soll und ein halbes Jahr später noch nachvollziehbar sein muss, reicht ein Shell-Skript nicht mehr.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Verbindet über
SSH, ohne Agent auf dem Zielsystem
Beschreibt
Den Zustand in YAML-Playbooks
Kernidee
Der zweite Lauf ändert nichts mehr
Verwechselt mit
Terraform

Inventar, Playbook, Modul

Das Inventar listet die Hosts und ordnet sie Gruppen zu, etwa Webserver, Datenbanken oder Standorte. Es kann eine statische Datei sein oder dynamisch aus einer Cloud-Umgebung erzeugt werden. Variablen hängen an Gruppen oder einzelnen Hosts, damit dieselbe Aufgabe im Testsystem andere Werte bekommt als in der Produktion.

Ein Playbook ordnet Gruppen eine Folge von Aufgaben zu. Jede Aufgabe ruft ein Modul auf, also einen fertigen Baustein für Pakete, Dienste, Dateien, Benutzer oder Firewallregeln. Konfigurationsdateien entstehen aus Vorlagen, in denen Variablen eingesetzt werden. Sobald mehrere Playbooks dieselben Schritte brauchen, bündelst du Aufgaben, Vorlagen und Standardwerte in einer Rolle und rufst sie von überall auf.

Idempotenz ist der eigentliche Punkt

Ein Modul beschreibt keinen Befehl, sondern einen Zustand: Dieses Paket soll installiert sein, dieser Dienst soll laufen, diese Zeile soll in der Datei stehen. Vor jeder Änderung prüft das Modul den Ist-Zustand und tut nur dann etwas, wenn er abweicht. In der Ausgabe siehst du das an ok und changed.

Daraus folgt die wichtigste Eigenschaft: Dasselbe Playbook kann beliebig oft laufen, ohne Schaden anzurichten. Wer Aufgaben über shell oder command löst, gibt genau diese Eigenschaft auf, denn ein roher Befehl wird bei jedem Durchlauf ausgeführt, ganz gleich, wie das System gerade aussieht. Wenn es ohne ihn nicht geht, gehört eine Bedingung dazu, die festlegt, wann er überhaupt ausgeführt wird und wann er als Änderung gilt.

Wo es im Betrieb hakt

Geheimnisse sind der erste Stolperstein. Kennwörter und Schlüssel landen schnell im Klartext in einer Variablendatei und damit in der Versionsverwaltung. Ansible bringt dafür eine eigene Verschlüsselung mit, alternativ holst du die Werte zur Laufzeit aus einem Tresor.

Der zweite ist fehlende Struktur. Ein einzelnes Playbook mit vierhundert Zeilen lässt sich weder testen noch von jemand anderem übernehmen. Rollen, getrennte Variablendateien pro Umgebung und ein Trockenlauf vor dem Ausrollen sind der Unterschied zwischen Automatisierung und einem Skript mit besserem Namen. Bei Rollouts auf viele Systeme begrenzt du zusätzlich, wie viele Hosts gleichzeitig angefasst werden, damit ein Fehler nicht alle gleichzeitig trifft.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Nicht verwechseln

Ansible und was oft damit gleichgesetzt wird

Ansible gegen Terraform und OpenTofu

Diese Werkzeuge legen Infrastruktur an, also Netze, Server und Dienste, und führen dazu einen Zustand mit, um Abweichungen zu erkennen. Ansible konfiguriert in der Regel, was bereits läuft. In vielen Umgebungen laufen beide nacheinander.

Ansible gegen Shell-Skript

Ein Skript arbeitet Befehle von oben nach unten ab, ohne den Ist-Zustand zu prüfen. Ein zweiter Lauf kann deshalb Schaden anrichten. Ansible bringt zusätzlich Inventar, Variablen pro Umgebung und einheitliche Fehlerbehandlung mit.

Ansible gegen Puppet und Chef

Beide arbeiten klassisch mit einem Agenten auf dem Zielsystem, das regelmäßig einen Server nach seinem Sollzustand fragt. Ansible schiebt die Änderung von einer Steuerstation aus und braucht auf dem Ziel nur SSH und Python.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
In der Praxis

Aus Playbooks werden schnell Skripte in YAML

Sobald jede Aufgabe ein Kommando ausführt, statt das passende Modul zu benutzen, ist die Idempotenz weg. Jeder Lauf meldet eine Änderung, obwohl sich nichts geändert hat, der Probelauf sagt nichts mehr aus, und niemand kann dem Ergebnis noch ansehen, ob etwas passiert ist. Zwei Fragen genügen als Prüfung: Gibt es für diese Aufgabe ein Modul, und wenn wirklich ein Kommando nötig ist, ist festgelegt, wann es überhaupt laufen muss?

Zugangsdaten und Inventar sind die zweite Baustelle. Passwörter landen im Repository, weil es beim ersten Versuch schneller ging, und der verschlüsselte Tresor wird nachgereicht, wenn es zu spät ist. Genauso wichtig ist die saubere Trennung der Inventare: Ein falsch gesetztes Ziel verteilt eine Änderung in Sekunden auf die gesamte Produktion, und der Weg zurück ist kein einzelner Befehl.

Bei Diensten hinter einer Lastverteilung entscheidet die Reihenfolge über die Verfügbarkeit. Ohne Begrenzung arbeitet der Lauf alle Ziele gleichzeitig ab und startet damit auch alle Instanzen gleichzeitig neu. In Stapeln zu arbeiten und nach jedem Stapel zu prüfen, ob der Dienst wirklich wieder antwortet, kostet ein paar Zeilen und erspart die Erklärung im Nachhinein.

Ansible lernen

Wie Ansible mit Versionsverwaltung, Pipeline und Infrastrukturcode zu einem durchgehenden Ablauf zusammenwächst, ordnen die Trainings zu Automatisierung und Deployment ein.

Wissen prüfen

Sitzt Ansible schon?

Lesen fühlt sich schnell nach Können an. Ein kurzer Test zeigt dir, was davon schon sitzt und wo sich ein Kurs lohnt. Kostenlos, ohne Anmeldung, mit einer Erklärung zu jeder Antwort.

Häufige Fragen

Muss ich auf den Zielsystemen etwas installieren?
Auf Linux-Systemen brauchst du nur einen SSH-Zugang und eine Python-Installation, die dort meist ohnehin vorhanden ist. Windows-Systeme werden über WinRM oder SSH angesprochen und Netzwerkgeräte über eigene Module, die direkt mit der Gerätesprache arbeiten.
Was ist der Unterschied zwischen einem Playbook und einer Rolle?
Das Playbook sagt, welche Hosts was bekommen. Die Rolle ist ein wiederverwendbares Paket aus Aufgaben, Vorlagen, Dateien und Standardwerten, das mehrere Playbooks einbinden können. Sobald du etwas zum zweiten Mal brauchst, gehört es in eine Rolle.
Wie teste ich Änderungen, bevor sie auf die Produktion gehen?
Mit einem Trockenlauf, der nur meldet, was sich ändern würde, und mit der Anzeige der konkreten Dateiunterschiede. Ergänzend beschränkst du den Lauf zuerst auf eine kleine Hostgruppe, bevor du die Begrenzung aufhebst.
Persönlich für dich da

Deine Ansprechpartner

Du willst das Thema nicht nur nachschlagen, sondern anwenden können? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Ordnet mit dir ein, welcher Kurs zu deinem Vorwissen passt.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant Inhouse-Trainings, die an euren eigenen Daten und Abläufen ansetzen.

Ansible im Kurs statt im Lexikon

Nachschlagen bringt dich bis zum Verstehen. Anwenden lernst du an echten Aufgaben.