Lab für Ansible-Rollen: eine Rolle, Handler und Vault in einer Ubuntu-VM
Dieses Lab ist die zweite Stufe des Labs Grundlagen von Ansible. Jede lernende Person bekommt eine eigene Ubuntu-VM mit installiertem ansible-core, ein kleines Projekt und eine README und baut eine Rolle von Grund auf: ihre Variablen, eine Vorlage, Aufgaben mit Tags, einen Handler und ein Token, das in Ansible Vault liegt. Die Maschine selbst ist das Ziel, über eine lokale Verbindung, sodass nichts weiter nötig ist.
Auf dem Rechner der lernenden Person wird nichts installiert. Grundlagen von Ansible kommt zuerst: Dort lernt man ein Playbook, ein Paket, eine Vorlage und das zweimalige Ausführen eines Playbooks, und dieses Lab wiederholt das nicht.
Was die Lernenden lernen
Wie aus einem Playbook eine Rolle wird. Die lernende Person legt die Standardordner mit ansible-galaxy role init an, das ohne Netz funktioniert, und füllt tasks, defaults, vars, templates, handlers und meta. Sie findet heraus, in welcher Reihenfolge Variablen gewinnen: Die defaults der Rolle verlieren gegen eine Variable im Play, die eigenen vars der Rolle schlagen sie, und ein mit -e übergebener Wert schlägt alle. Sie schreibt eine Jinja2-Vorlage mit Schleife und Bedingung und sieht sie mit --check und --diff, nutzt loop, register und when und führt mit --tags und --limit nur einige Aufgaben aus.
Ein Handler, den drei Aufgaben aufrufen, muss einmal laufen, und die lernende Person muss die Rolle ihre Handler zwischendurch ausführen lassen. Der letzte Teil ist Ansible Vault: eine mit ansible-vault erzeugte Datei, mit einer Passwortdatei geöffnet, und ein Token, das sonst nirgends im Klartext steht. Alles geschieht mit den eigenen Modulen von Ansible, an Dateien, Ordnern und einem Systembenutzer, die eine Prüfung sehen kann.
Das Projekt
Die lernende Person beginnt in einem Ordner mit einem Inventar aus zwei Namen für diese eine Maschine, einem Playbook, das eine noch nicht vorhandene Rolle nutzt, und einem falschen Vault-Passwort, das sagt, dass es kein Geheimnis ist. Das Playbook setzt im Play bereits zwei Variablen, die Rangfolge muss die lernende Person also richtig treffen und nicht nur lesen. Die Maschine ist klein: eine CPU, 1 GB Arbeitsspeicher und 10 GB Festplatte.
Im Browser ausführen
VM-Labs werden als Lab-Aufgabe in einem Modul gestellt, und das Beispiel steht auf der Seite des Labs. Das Lab nutzt nur das Ubuntu-Archiv, die VM eines kostenlosen Kontos führt es also ebenfalls aus.
- Lab hinzufügen. Fügen Sie in einem Modul, das Sie unterrichten, eine Aufgabe hinzu und wählen Sie die Karte für das Ubuntu-VM-Lab. Die Seite zeigt statt einer Compose-Datei eine kurze Beschreibung der Maschine.
- Mit dem Beispiel beginnen. Die Seite bietet fertige Labs zum Einstieg an. Wählen Sie Ansible roles, handlers and vault. Ein Beispiel ersetzt den Text, und Rückgängig holt Ihren zurück.
- Veröffentlichen und eigene Kopie starten. Veröffentlichen Sie und klicken Sie dann auf Starten. Beim ersten Start der VM installiert das Setup-Skript ansible-core aus dem Ubuntu-Archiv und schreibt das Projekt, das Playbook, ein falsches Vault-Passwort und die README, in ein bis zwei Minuten.
- Terminal öffnen. Öffnen Sie das Terminal und lesen Sie README.md im Home-Ordner: Sie sagt in sieben Schritten, was zu tun ist, und verrät keine Lösung.
Eine Basics-Lektion zu diesem Lab
Ansible Roles Basics ist eine kleine Lektion, die in diesem Lab, einer Ubuntu-VM, durchgeführt wird. Sie hat einen Einstieg, ein Ziel mit „Ich kann“, Schlüsselwörter, einen Start, nach jeder Idee einen Check, einen häufigen Fehler und einen Abschlusscheck, und jeder Schritt hat eine Schaltfläche Ausführen, die ihren Befehl ins Terminal der Maschine tippt. Die lernende Person legt eine Wegwerf-Rolle an, um ihre Ordner zu sehen, führt ein kleines Playbook zweimal aus und sieht eine Variable von -e geschlagen, sieht einen Handler nach zwei Aufrufen einmal laufen und verschlüsselt einen Wert mit Vault.
Die Lektion schaut sich nur um und überlässt die eigene Rolle des Labs der lernenden Person, sie verrät also keine Lösung.
Wie bewertet wird
Das Lab hat eine Prüfung. Sie läuft auf einer Kopie der gespeicherten Maschine nach einem frischen Start. Zuerst liest sie die Rolle: die Standardordner, eine ausgefüllte meta-Datei, sechs Aufgaben in der Rolle und nicht im Playbook, einen Handler, eine Schleife, Tags und eine Vorlage mit for-Schleife und if. Sie weist shell, command, raw und script zurück und ebenso ein Lookup, das ein Programm ausführt. Sie öffnet die Vault-Datei mit dem Passwort des Labs und weist ein im Projekt im Klartext stehendes Token zurück.
Dann führt sie das eigene Playbook der lernenden Person siebenmal mit Werten aus, die niemand gesehen hat: auf einer sauberen Maschine, noch einmal ohne etwas zu ändern, als Probelauf, der die Änderung zeigen und nichts schreiben muss, mit anderen Werten, mit jedem Tag und mit --limit auf den Host, den das Play nicht nutzt. Sie zählt die Handler-Läufe in der echten Ausgabe, sodass ein Handler, der dreimal läuft, zurückgewiesen wird, und liest die entstandenen Dateien. Die erste Zeile der Ausgabe sagt, warum.
- Zuweisen. Weisen Sie das Lab wie jede Aufgabe zu, auf Wunsch mit Abgabetermin. Jede lernende Person bekommt eine eigene VM, die zwischen den Sitzungen erhalten bleibt.
- Prüfung ausführen. Klicken Sie in der Klassenliste in der Zeile einer lernenden Person auf Prüfung ausführen. Sie startet eine Kopie der gespeicherten Maschine, die nicht zurückgespeichert wird, führt das Prüfskript des Labs als root aus und zeigt, ob es bestanden wurde, was es ausgegeben hat und wann. Die lernende Person erfährt das Ergebnis nicht.
- Bewerten. Lesen Sie die erste Zeile der Ausgabe der Prüfung: Sie sagt, was nicht stimmt, etwa ein Handler, der dreimal lief, eine Variable am falschen Ort oder eine Vault-Datei, die sich nicht öffnen lässt. Geben Sie die Arbeit mit einer Begründung zurück, wenn mehr nötig ist.
Die Definition auf GitHub
Die Datei ist die ganze Lab-Definition, derselbe Text, den die Plattform ausführt: Größe, Setup-Skript, README und Prüfung. Kopieren Sie sie und ändern Sie Rolle, Variablen oder Handler, um ein längeres Lab zu bauen.
Dieses Lab ausprobieren, und was es kostet
Mit einem kostenlosen persönlichen Konto können Sie die Grundlagenlektionen in diesem Lab durcharbeiten, mit genug kostenlosem Guthaben pro Monat für die meisten Lektionen und ohne Karte. Für eine Klasse sind die ersten 365 Tage für eine Schule kostenlos, für bis zu 50 Lernende; danach zahlt sie je lernender Person und Jahr, alle Labs inklusive und Lehrkräfte kostenlos.
Häufige Fragen
- Braucht das Lab eine Lizenz oder ein kostenpflichtiges Ansible?
- Nein. ansible-core ist Open Source und im Ubuntu-Archiv und wird beim Start der VM der lernenden Person installiert. Wir verteilen nichts davon, und von anderswo wird nichts heruntergeladen.
- Warum gibt es keinen Dienst, der neu gestartet wird?
- Das Lab zeigt einen Handler an dem, was eine Prüfung sehen kann: wie oft er lief, gezählt in der Ausgabe des echten Laufs, und eine Datei, die er schreibt. Den Neustart eines echten Dienstes kann eine Prüfung nicht beweisen, deshalb lässt das Lab ihn weg und sagt das.
- Können die Lernenden etwas kaputt machen?
- Nur ihre eigene Kopie. Die Maschine erreicht das Ubuntu-Archiv, PyPI, npm und GitHub und sonst nichts. Das Vault-Passwort ist eine Fälschung, die für das Lab im Projekt liegt, und das Token sind Demodaten, nie ein echtes Geheimnis.
- Wurde das Lab in einer echten VM einer lernenden Person getestet?
- Das Setup, die Befehle der Lektion und die Prüfung, mit dem, was falsche Antworten ihr antun, liefen in einem echten Ubuntu 26.04 in einem Container, der die VM ersetzt. Eine gestartete VM, die von einem Festplattenabbild bootet, ist vor dem Unterricht einen Versuch wert.