Automatisiertes Konfigurationsmanagement

Was ist Ansible?

Ansible ist ein quelloffenes Werkzeug für Konfigurationsmanagement und IT-Automatisierung, das von Red Hat entwickelt wird. Es verbindet sich ohne installierten Agenten per SSH mit den Zielsystemen und stellt dort den Zustand her, der in YAML-Dateien, den Playbooks, beschrieben ist.

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, bei Windows WinRM oder SSH, ohne Agent
Beschreibt
Den Sollzustand in YAML-Playbooks
Kernidee
Der zweite Lauf ändert nichts mehr
Verwechselt mit
Terraform

Wofür Ansible eingesetzt wird

Ansible nimmt Administratoren wiederkehrende Arbeit an vielen Systemen ab. Typische Aufgaben sind das Einrichten frisch installierter Server, das Verteilen von Konfigurationsdateien, Benutzern und Firewallregeln, das Einspielen von Updates in festgelegter Reihenfolge und das Ausrollen von Anwendungen. Neben Linux-Servern steuert Ansible Windows-Systeme, Netzwerkgeräte von Herstellern wie Cisco oder Juniper sowie Cloud-Dienste.

Gesteuert wird alles von einer Steuerstation, dem Control Node, auf dem Ansible installiert ist. Das muss ein Linux- oder macOS-System sein, unter Windows geht es nur über das Linux-Subsystem WSL. Die Zielsysteme, die Managed Nodes, brauchen dagegen nichts außer einem SSH-Zugang und Python, das auf Linux ohnehin vorhanden ist.

Inventar, Playbook, Modul, Rolle

Vier Begriffe tragen das ganze Werkzeug:

  • 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.

  • Modul

    Ein fertiger Baustein für eine Aufgabe, etwa Pakete installieren, Dienste starten, Dateien anlegen oder Benutzer verwalten. Ansible bringt Tausende davon mit, gebündelt in Collections.

  • Playbook

    Eine YAML-Datei, die festlegt, welche Hostgruppe welche Aufgaben bekommt. Jede Aufgabe ruft ein Modul mit Parametern auf.

  • Rolle

    Ein wiederverwendbares Paket aus Aufgaben, Vorlagen, Dateien und Standardwerten, das mehrere Playbooks einbinden können.

Variablen hängen an Gruppen oder einzelnen Hosts, damit dieselbe Aufgabe im Testsystem andere Werte bekommt als in der Produktion. Konfigurationsdateien entstehen aus Jinja2-Vorlagen, in die Ansible diese Variablen einsetzt.

Ein Playbook im Beispiel

Das folgende Playbook sorgt dafür, dass auf allen Hosts der Gruppe webserver der Webserver nginx installiert ist und läuft. Mit become: true führt Ansible die Aufgaben mit Root-Rechten aus.

- name: Webserver einrichten
  hosts: webserver
  become: true
  tasks:
    - name: nginx installieren
      ansible.builtin.package:
        name: nginx
        state: present

    - name: nginx starten und beim Booten aktivieren
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: true

# Ausführen, zuerst als Trockenlauf:
# ansible-playbook -i inventory.ini site.yml --check --diff

Auffällig ist, dass nirgends „installiere“ oder „starte“ als Befehl steht. Die Aufgaben beschreiben einen Zustand: present heißt installiert, started heißt läuft. Ist nginx schon da und aktiv, meldet Ansible ok und tut nichts. Fehlt etwas, stellt es den Zustand her und meldet changed.

Idempotenz ist der eigentliche Punkt

Diese Eigenschaft heißt Idempotenz: Dasselbe Playbook kann beliebig oft laufen, und ab dem zweiten Lauf ändert sich nichts mehr, solange niemand am System gedreht hat. Dadurch taugt ein Playbook nicht nur zum Einrichten, sondern auch zur Kontrolle. Meldet ein Lauf auf einem eingerichteten Server plötzlich changed, hat jemand von Hand etwas verändert.

Wer Aufgaben über die Module shell oder command löst, gibt genau diese Eigenschaft auf, denn ein roher Befehl läuft bei jedem Durchlauf, egal wie das System gerade aussieht. Wenn es ohne ihn nicht geht, gehört eine Bedingung dazu, etwa creates mit dem Pfad einer Datei, die der Befehl erzeugt, oder changed_when, das festlegt, wann das Ergebnis als Änderung gilt.

Ad-hoc-Befehle und die wichtigsten Optionen

Nicht alles braucht ein Playbook. Für einmalige Aufgaben ruft der Befehl ansible ein einzelnes Modul direkt auf, ein sogenannter Ad-hoc-Befehl. Diese Optionen brauchst du dabei am häufigsten:

OptionBedeutung
-iInventar-Datei oder Hostliste angeben
-mModul wählen, ohne Angabe gilt command
-aArgumente für das Modul, beim Standardmodul der Befehl selbst
-bMit erhöhten Rechten ausführen (become, meist sudo)
-lLauf auf bestimmte Hosts oder Gruppen begrenzen
--check, --diffTrockenlauf und Anzeige der Dateiunterschiede

Drei typische Aufrufe sehen so aus:

ansible all -i inventory.ini -m ansible.builtin.ping
ansible webserver -i inventory.ini -a "uptime"
ansible webserver -i inventory.ini -b -m ansible.builtin.service -a "name=nginx state=restarted"

Die drei Beispielzeilen prüfen, ob alle Hosts erreichbar sind, fragen auf allen Webservern die Laufzeit ab und starten dort nginx mit Root-Rechten neu. Dieselben Optionen gelten auch für ansible-playbook, und gerade -l und --check sind die Absicherung, bevor eine Änderung auf die ganze Produktion geht.

Ansible, ansible-core und die Automation Platform

Unter dem Namen Ansible laufen mehrere Dinge. ansible-core ist die Laufzeit mit den Befehlen und den eingebauten Modulen. Das Paket ansible bringt zusätzlich eine große Auswahl von Community-Collections mit. Weitere Collections und Rollen holst du über Ansible Galaxy.

Die Red Hat Ansible Automation Platform ist das kommerzielle Produkt darüber. Sie ergänzt eine Weboberfläche zum Starten und Planen von Läufen, Rechteverwaltung, Protokollierung und zertifizierte Collections. Das freie Projekt AWX ist die quelloffene Grundlage dieser Oberfläche.

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, virtuelle Maschinen und Cloud-Dienste, und führen dazu eine Zustandsdatei, um Abweichungen zu erkennen. Ansible konfiguriert in der Regel, was bereits läuft. In vielen Umgebungen laufen beide nacheinander: Terraform baut die Maschine, Ansible richtet sie ein.

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, Trockenlauf und einheitliche Fehlerbehandlung mit.

Ansible gegen Puppet und Chef

Beide arbeiten klassisch mit einem Agenten auf dem Zielsystem, der regelmäßig einen Server nach seinem Sollzustand fragt (Pull). Ansible schiebt die Änderung von einer Steuerstation aus (Push) 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 Trockenlauf 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 laufen muss?

Zugangsdaten sind die zweite Baustelle. Passwörter landen im Repository, weil es beim ersten Versuch schneller ging, und Ansible Vault, die eingebaute Verschlüsselung für Variablendateien, wird nachgereicht, wenn es zu spät ist. Alternativ holst du Geheimnisse zur Laufzeit aus einem externen Tresor. Genauso wichtig ist die saubere Trennung der Inventare: Ein falsch gesetztes Ziel verteilt eine Änderung in Sekunden auf die gesamte Produktion.

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. Mit serial arbeitest du in Stapeln und prüfst nach jedem Stapel, ob der Dienst wieder antwortet. Das 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 Python, das dort meist ohnehin vorhanden ist. Windows-Systeme werden über WinRM oder SSH angesprochen, 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 und Standardwerten, das mehrere Playbooks einbinden. Sobald du etwas zum zweiten Mal brauchst, gehört es in eine Rolle.
Ist Ansible kostenlos?
Ja, ansible-core und das Community-Paket stehen unter einer Open-Source-Lizenz und kosten nichts. Kostenpflichtig ist die Red Hat Ansible Automation Platform mit Weboberfläche, Support und zertifizierten Inhalten.
Muss ich Python können, um Ansible zu nutzen?
Nein. Playbooks sind YAML, und für die meisten Aufgaben reichen die vorhandenen Module. Python brauchst du erst, wenn du eigene Module oder Plugins schreiben willst.
Was ist ein Handler?
Ein Handler ist eine Aufgabe, die nur läuft, wenn eine andere Aufgabe ihn per notify anstößt und dabei tatsächlich etwas geändert hat. Klassisches Beispiel: Der Webserver wird nur dann neu geladen, wenn sich seine Konfigurationsdatei wirklich geändert hat.

Passt thematisch dazu

Wenn du Ansible selbst ausprobieren willst, zeigt dir eine eigene Anleitung den Weg zum ersten eigenen Playbook, auch ohne Python-Kenntnisse.

Wer Infrastruktur anlegt und anschließend konfiguriert, sollte wissen, wo Terraform aufhört und Ansible übernimmt, bevor beide Werkzeuge dieselben Ressourcen anfassen.

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.