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:
| Option | Bedeutung |
|---|---|
| -i | Inventar-Datei oder Hostliste angeben |
| -m | Modul wählen, ohne Angabe gilt command |
| -a | Argumente für das Modul, beim Standardmodul der Befehl selbst |
| -b | Mit erhöhten Rechten ausführen (become, meist sudo) |
| -l | Lauf auf bestimmte Hosts oder Gruppen begrenzen |
| --check, --diff | Trockenlauf 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
Ansible und was oft damit gleichgesetzt wird
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.
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.
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
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.
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.
Kurse, die Ansible behandeln
Häufige Fragen
Muss ich auf den Zielsystemen etwas installieren?
Was ist der Unterschied zwischen einem Playbook und einer Rolle?
Ist Ansible kostenlos?
Muss ich Python können, um Ansible zu nutzen?
Was ist ein Handler?
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.
Deine Ansprechpartner
Du willst das Thema nicht nur nachschlagen, sondern anwenden können? Wir beraten dich persönlich und kostenlos.
Yves Hoppe
Weiterbildung & Beratung
Ordnet mit dir ein, welcher Kurs zu deinem Vorwissen passt.
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.
Verwandte Begriffe
Alle Begriffe im Glossar