Dreißig Rechner, dreißigmal derselbe Fehler
Ansible richtet Rechner nach einer Beschreibung ein, die in einer Datei steht. So wird jeder Rechner genau gleich.
Eine Schule stellt dreißig Rechner für einen neuen Computerraum auf. Von Hand dauert das Stunden, und bei jedem Rechner schleicht sich ein anderer Fehler ein. Mit einer Beschreibung tippst du einmal.
Am Ende dieser Lektion
Notiz
Ich kann ein Playbook lesen und erklären, was es auf einem Rechner herstellt.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Ansible | ein Programm, das Rechner nach einer Beschreibung einrichtet | |
| Playbook | die Datei, in der die Beschreibung steht | |
| Aufgabe | ein einzelner Schritt im Playbook | |
| Modul | ein fertiger Baustein für eine Art von Aufgabe | package |
| Zielzustand | so soll der Rechner nachher aussehen | |
| Idempotent | ein zweiter Lauf ändert nichts mehr |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Bevor du anfängst
Notiz
Drück oben in der Leiste auf Lab starten. Das Lab ist eine ganze Ubuntu-Maschine für dich allein und braucht einige Minuten zum Hochfahren, denn Ansible wird erst beim Start installiert. Jede Schaltfläche Ausführen tippt ihren Befehl in das Terminal.
Du beschreibst das Ergebnis, nicht den Weg
Ein Skript sagt dem Rechner Schritt für Schritt, was er tun soll. Ein Playbook sagt, wie der Rechner am Ende aussehen soll.
Das ist der Zielzustand. Ansible schaut nach, was schon stimmt, und ändert nur den Rest.
Von Hand oder mit Playbook
| Von Hand | Mit Playbook | |
|---|---|---|
| Dreißig Rechner | Dreißigmal dieselben Klicks | Ein Lauf je Rechner |
| Fehler | Bei jedem Rechner anders | Bei allen gleich, also leicht zu finden |
| Nachweis | Niemand weiß, was getan wurde | Die Datei zeigt es und lässt sich aufheben |
| Neuer Rechner später | Alles noch einmal erinnern | Dasselbe Playbook laufen lassen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Playbook besteht aus Aufgaben mit Modulen
Jede Aufgabe hat einen Namen, ein Modul und die Angaben dazu. Das Modul ist der fertige Baustein, zum Beispiel für ein Programm, einen Ordner oder eine Datei.
Die Tabelle zeigt ein Beispiel. Die Datei im Lab ist in YAML geschrieben, hier siehst du denselben Inhalt als Tabelle.
Ein Playbook für einen Vereinsrechner
| Nr. | Name der Aufgabe | Modul | Angaben | Zielzustand |
|---|---|---|---|---|
| 1 | Programm htop installieren | package | name: htop | vorhanden |
| 2 | Ordner für Vereinsdaten anlegen | file | path: /srv/verein | ein Ordner |
| 3 | Begrüßung schreiben | template | Vorlage und Ziel | Datei mit dem Vereinsnamen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
In den Ordner des Projekts wechseln
cd ~/ansible-labHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Das Playbook ansehen
cat site.ymlHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Das Playbook unverändert ausführen
ansible-playbook site.ymlHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein zweiter Lauf ändert nichts mehr
Am Ende eines Laufs steht eine Zusammenfassung. Dort zählt changed=, wie viele Aufgaben etwas verändert haben.
Ein gutes Playbook ist idempotent. Beim ersten Lauf steht dort eine Zahl, beim zweiten changed=0, weil schon alles stimmt.
Zwei Läufe derselben Aufgabe
| Aufgabe | Erster Lauf | Zweiter Lauf |
|---|---|---|
| Modul package mit htop vorhanden | changed: wird installiert | ok: ist schon da |
| Modul file mit Ordner vorhanden | changed: wird angelegt | ok: ist schon da |
| Befehl, der nur eine Zeile anhängt | changed: eine Zeile mehr | changed: noch eine Zeile mehr |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele glauben, ein Playbook sei nur ein Shell-Skript in anderer Schreibweise. Das stimmt nicht. Ein Modul prüft zuerst den Zustand und handelt nur, wenn etwas fehlt. Ein bloßer Befehl tut es jedes Mal, und das Ergebnis verändert sich bei jedem Lauf.
Weiterführend: einen Probelauf lesen
Mit ansible-playbook site.yml --check --diff läuft ein Playbook zur Probe. Es zeigt, was sich ändern würde, ohne etwas zu ändern.
Lies dazu die README in deinem Home-Ordner. Schreib in zwei Sätzen auf, welche drei Arbeiten das Lab von dir verlangt und woran du erkennst, dass du fertig bist.