Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Ansible-Tags, Limit und Vault

Nach dieser Lektion: Ich kann einen Teil einer Rolle ausführen und ein Geheimnis aus dem Klartext heraushalten.

Lektion, 60 Min.18 BefehleLab für Ansible-Rollen: eine Rolle, Handler und Vault in einer Ubuntu-VM

Wie führt man Teile eines Playbooks aus?

Mit Tags und der Option --limit führt Ansible nur einen Teil einer Rolle aus: bestimmte Aufgaben oder bestimmte Rechner. Mit Ansible Vault bleibt ein Geheimnis wie ein Passwort verschlüsselt, auch wenn die Dateien in Git liegen.

Beides braucht jedes echte Projekt. Eine große Rolle läuft nicht jedes Mal ganz, und ein Passwort im Klartext in einem Repository ist ein Leck.

Am Ende dieser Lektion

Notiz

Ich kann einen Teil einer Rolle ausführen und ein Geheimnis aus dem Klartext heraushalten.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Tagein Etikett an einer Aufgabe, nach dem man auswählen kanntags: [konfig]
Limitdie Beschränkung eines Laufs auf bestimmte Rechner--limit web1
Ansible Vaultdas Werkzeug, das Dateien oder Werte verschlüsselt
Vault-Passwortdas Passwort, das eine Vault-Datei öffnet
KlartextText, den jede Person lesen kann, die die Datei öffnet
Verschlüsseltunlesbar ohne das passende Passwort

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Einen eigenen Ordner anlegen

Befehl
mkdir -p ~/rolle-demo

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

In den Ordner wechseln

Befehl
cd ~/rolle-demo

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Inventar mit zwei Gruppen schreiben

Befehl
printf '%s\n' '[web]' 'web1 ansible_connection=local' '[reserve]' 'reserve1 ansible_connection=local' > inventory.ini

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Tag ist ein Etikett an einer Aufgabe

An jede Aufgabe können Sie Tags hängen. Mit --tags führt Ansible nur Aufgaben mit diesem Tag aus. Mit --skip-tags lässt es die Aufgaben mit diesem Tag weg.

Zwei Namen sind besonders. Eine Aufgabe mit always läuft immer, außer Sie überspringen genau diesen Tag. Eine Aufgabe mit never läuft nur, wenn Sie ihren anderen Tag ausdrücklich wählen.

Ein Playbook mit vier Aufgaben schreiben

Befehl
printf '%s\n' '- hosts: web' '  gather_facts: false' '  tasks:' '    - name: Ordner anlegen' '      ansible.builtin.file:' '        path: /tmp/tagdemo' '        state: directory' '      tags: [ordner]' '    - name: Konfiguration schreiben' '      ansible.builtin.copy:' '        content: "port=8080\n"' '        dest: /tmp/tagdemo/dienst.conf' '      tags: [konfig]' '    - name: Hinweis zeigen' '      ansible.builtin.debug:' '        msg: Ich laufe immer' '      tags: [always]' '    - name: Aufraeumen' '      ansible.builtin.file:' '        path: /tmp/tagdemo' '        state: absent' '      tags: [never, aufraeumen]' > tags.yml

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Auflisten, was ohne Angabe liefe

Befehl
ansible-playbook -i inventory.ini tags.yml --list-tasks

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Auflisten, was mit --tags konfig liefe

Befehl
ansible-playbook -i inventory.ini tags.yml --tags konfig --list-tasks

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Beispiel: welche Aufgaben bei welchem Aufruf laufen

AufrufOrdner anlegenKonfiguration schreibenHinweis zeigenAufraeumen
ohne Angabeläuftläuftläuftläuft nicht (never)
--tags konfigläuft nichtläuftläuft (always)läuft nicht
--skip-tags konfigläuftläuft nichtläuftläuft nicht (never)
--tags aufraeumenläuft nichtläuft nichtläuft (always)läuft

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Nur die Konfiguration ausführen

Befehl
ansible-playbook -i inventory.ini tags.yml --tags konfig | grep -o "failed=[0-9]"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ordner und Konfiguration ausführen

Befehl
ansible-playbook -i inventory.ini tags.yml --tags ordner,konfig | grep -o -E "changed=[0-9]|failed=[0-9]"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele wählen nur das Tag der Aufgabe, die sie ändern wollen. Fehlt dann, was eine übersprungene Aufgabe angelegt hätte, scheitert der Lauf. Im Beispiel braucht die Konfiguration den Ordner. Wählen Sie die Tags, von denen die Aufgabe abhängt, gleich mit.

Mit --limit beschränken Sie einen Lauf auf Rechner

Ein Play nennt die Rechner, für die es gilt, hier die Gruppe web. Mit --limit name schränken Sie einen Lauf weiter ein. Es bleiben nur Rechner, die das Play nennt und das Limit.

Ein Limit auf einen Rechner außerhalb des Plays lässt nichts übrig. --list-hosts zeigt, welche Rechner es träfe.

Mit --limit web1

Befehl
ansible-playbook -i inventory.ini tags.yml --limit web1 --list-hosts | grep -o "hosts ([0-9]*)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Mit --limit reserve1

Befehl
ansible-playbook -i inventory.ini tags.yml --limit reserve1 --list-hosts | grep -o "hosts ([0-9]*)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ansible Vault verschlüsselt Dateien mit einem Passwort

Ein Passwort im Klartext in einer Datei, die in Git liegt, kann jede Person lesen, die das Repository sieht. Ansible Vault verschlüsselt die Datei mit einem Vault-Passwort. In Git liegt dann nur Zeichensalat.

Die Datei beginnt mit der Zeile $ANSIBLE_VAULT;1.1;AES256. Das Vault-Passwort selbst gehört nie ins Repository. Hier liegt es zur Übung in einer Datei.

Ein Übungs-Passwort in eine Datei legen

Befehl
echo uebungspasswort > pw.txt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Datei mit einem erfundenen Wert schreiben

Befehl
printf '%s\n' 'db_passwort: Sommer-2026-xyz' > geheim.yml

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Datei verschlüsseln, ohne die Meldung

Befehl
ansible-vault encrypt --vault-password-file pw.txt geheim.yml > /dev/null

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die erste Zeile der Datei lesen

Befehl
head -n 1 geheim.yml

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Mit dem Passwort ansehen

Befehl
ansible-vault view --vault-password-file pw.txt geheim.yml

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Playbook schreiben, das die Datei lädt

Befehl
printf '%s\n' '- hosts: web1' '  gather_facts: false' '  vars_files:' '    - geheim.yml' '  tasks:' '    - name: Laenge zeigen' '      ansible.builtin.debug:' '        msg: "Das Passwort hat {{ db_passwort | length }} Zeichen"' > vault.yml

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ohne Passwort ausführen

Befehl
ansible-playbook -i inventory.ini vault.yml 2>&1 | grep -m 1 -o "no vault secrets found"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Mit Passwort ausführen

Befehl
ansible-playbook -i inventory.ini vault.yml --vault-password-file pw.txt | grep msg

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Über dieses Lab und seinen Quellcode: Lab für Ansible-Rollen: eine Rolle, Handler und Vault in einer Ubuntu-VM

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.