Ansible Workshop: Professional – Übungsaufgaben mit Lösungen
1. Ziel
Vertiefung und Abgabebeispiel zu Ziel
Eine vollständige Bearbeitung von Ziel besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Ziel
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Ziel
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Ziel zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Ziel
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Ziel immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Ziel
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Ziel
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Ziel
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Ziel
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Diese Übungen ergänzen den Workshop Professional. Sie führen von Erklärung über Umsetzung zu Validierung und Musterlösung.
2. Ausgangssituation
Vertiefung und Abgabebeispiel zu Ausgangssituation
Eine vollständige Bearbeitung von Ausgangssituation besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Ausgangssituation
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Ausgangssituation
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Ausgangssituation zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Ausgangssituation
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Ausgangssituation immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Ausgangssituation
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Ausgangssituation
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Ausgangssituation
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Ausgangssituation
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Du arbeitest in einem isolierten Ansible-Lab. Nutze localhost oder dedizierte Lab-VMs. Produktive Hosts, echte Secrets und Kundendaten sind ausgeschlossen.
3. Arbeitsregeln
Vertiefung und Abgabebeispiel zu Arbeitsregeln
Eine vollständige Bearbeitung von Arbeitsregeln besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Arbeitsregeln
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Arbeitsregeln
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Arbeitsregeln zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Arbeitsregeln
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Arbeitsregeln immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Arbeitsregeln
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Arbeitsregeln
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Arbeitsregeln
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Arbeitsregeln
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
- Prüfe Inventory und Scope vor jeder Änderung.
- Nutze Syntaxcheck, Check Mode und Diff Mode.
- Begründe
become. - Dokumentiere Play Recap und zweiten Lauf.
- Räume Lab-Artefakte zurück.
4. Aufgabenübersicht
Vertiefung und Abgabebeispiel zu Aufgabenübersicht
Eine vollständige Bearbeitung von Aufgabenübersicht besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Aufgabenübersicht
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Aufgabenübersicht
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Aufgabenübersicht zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Aufgabenübersicht
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Aufgabenübersicht immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Aufgabenübersicht
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Aufgabenübersicht
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Aufgabenübersicht
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Aufgabenübersicht
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
| Nr. | Thema | Ergebnis |
|---|---|---|
| 1 | Repository-Standards | Lab-Datei, Validierung und kurze Begründung |
| 2 | Collections | Lab-Datei, Validierung und kurze Begründung |
| 3 | CI | Lab-Datei, Validierung und kurze Begründung |
| 4 | ansible-lint | Lab-Datei, Validierung und kurze Begründung |
| 5 | Molecule | Lab-Datei, Validierung und kurze Begründung |
| 6 | Dynamic Inventory | Lab-Datei, Validierung und kurze Begründung |
| 7 | Orchestrierung | Lab-Datei, Validierung und kurze Begründung |
| 8 | Runbooks | Lab-Datei, Validierung und kurze Begründung |
5. Teil A: Aufgaben
Vertiefung und Abgabebeispiel zu Teil A: Aufgaben
Eine vollständige Bearbeitung von Teil A: Aufgaben besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Teil A: Aufgaben
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Teil A: Aufgaben
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Teil A: Aufgaben zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Teil A: Aufgaben
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Teil A: Aufgaben immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Teil A: Aufgaben
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Teil A: Aufgaben
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Teil A: Aufgaben
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Teil A: Aufgaben
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Aufgabe 1: Repository-Standards
Vertiefung und Abgabebeispiel zu Aufgabe 1: Repository-Standards
Eine vollständige Bearbeitung von Aufgabe 1: Repository-Standards besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Aufgabe 1: Repository-Standards
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Aufgabe 1: Repository-Standards
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Aufgabe 1: Repository-Standards zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Aufgabe 1: Repository-Standards
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Aufgabe 1: Repository-Standards immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Aufgabe 1: Repository-Standards
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Aufgabe 1: Repository-Standards
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Aufgabe 1: Repository-Standards
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Aufgabe 1: Repository-Standards
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Ziel
Du wendest Repository-Standards in einem kleinen, ungefährlichen Lab an und dokumentierst Scope, Umsetzung, Ergebnis und Rückbau.
Arbeitsauftrag
- Erstelle oder prüfe ein passendes Inventory.
- Beweise den Zielscope mit
--list-hosts. - Erstelle ein Playbook oder passe ein bestehendes Beispiel an.
- Nutze ein geeignetes
ansible.builtin-Modul. - Führe Syntaxcheck, Check Mode, echten Lauf und zweiten Lauf aus.
- Dokumentiere Play Recap, relevante Ausgabe und eine kurze Bewertung.
Erwartetes Ergebnis
- Das Playbook ist syntaktisch korrekt.
- Die Zielhosts sind eindeutig.
- Der zweite Lauf meldet keine unnötigen Änderungen.
- Risiken und Grenzen sind dokumentiert.
Aufgabe 2: Collections
Vertiefung und Abgabebeispiel zu Aufgabe 2: Collections
Eine vollständige Bearbeitung von Aufgabe 2: Collections besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Aufgabe 2: Collections
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Aufgabe 2: Collections
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Aufgabe 2: Collections zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Aufgabe 2: Collections
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Aufgabe 2: Collections immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Aufgabe 2: Collections
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Aufgabe 2: Collections
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Aufgabe 2: Collections
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Aufgabe 2: Collections
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Ziel
Du wendest Collections in einem kleinen, ungefährlichen Lab an und dokumentierst Scope, Umsetzung, Ergebnis und Rückbau.
Arbeitsauftrag
- Erstelle oder prüfe ein passendes Inventory.
- Beweise den Zielscope mit
--list-hosts. - Erstelle ein Playbook oder passe ein bestehendes Beispiel an.
- Nutze ein geeignetes
ansible.builtin-Modul. - Führe Syntaxcheck, Check Mode, echten Lauf und zweiten Lauf aus.
- Dokumentiere Play Recap, relevante Ausgabe und eine kurze Bewertung.
Erwartetes Ergebnis
- Das Playbook ist syntaktisch korrekt.
- Die Zielhosts sind eindeutig.
- Der zweite Lauf meldet keine unnötigen Änderungen.
- Risiken und Grenzen sind dokumentiert.
Aufgabe 3: CI
Vertiefung und Abgabebeispiel zu Aufgabe 3: CI
Eine vollständige Bearbeitung von Aufgabe 3: CI besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Aufgabe 3: CI
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Aufgabe 3: CI
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Aufgabe 3: CI zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Aufgabe 3: CI
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Aufgabe 3: CI immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Aufgabe 3: CI
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Aufgabe 3: CI
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Aufgabe 3: CI
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Aufgabe 3: CI
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Ziel
Du wendest CI in einem kleinen, ungefährlichen Lab an und dokumentierst Scope, Umsetzung, Ergebnis und Rückbau.
Arbeitsauftrag
- Erstelle oder prüfe ein passendes Inventory.
- Beweise den Zielscope mit
--list-hosts. - Erstelle ein Playbook oder passe ein bestehendes Beispiel an.
- Nutze ein geeignetes
ansible.builtin-Modul. - Führe Syntaxcheck, Check Mode, echten Lauf und zweiten Lauf aus.
- Dokumentiere Play Recap, relevante Ausgabe und eine kurze Bewertung.
Erwartetes Ergebnis
- Das Playbook ist syntaktisch korrekt.
- Die Zielhosts sind eindeutig.
- Der zweite Lauf meldet keine unnötigen Änderungen.
- Risiken und Grenzen sind dokumentiert.
Aufgabe 4: ansible-lint
Vertiefung und Abgabebeispiel zu Aufgabe 4: ansible-lint
Eine vollständige Bearbeitung von Aufgabe 4: ansible-lint besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Aufgabe 4: ansible-lint
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Aufgabe 4: ansible-lint
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Aufgabe 4: ansible-lint zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Aufgabe 4: ansible-lint
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Aufgabe 4: ansible-lint immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Aufgabe 4: ansible-lint
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Aufgabe 4: ansible-lint
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Aufgabe 4: ansible-lint
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Aufgabe 4: ansible-lint
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Ziel
Du wendest ansible-lint in einem kleinen, ungefährlichen Lab an und dokumentierst Scope, Umsetzung, Ergebnis und Rückbau.
Arbeitsauftrag
- Erstelle oder prüfe ein passendes Inventory.
- Beweise den Zielscope mit
--list-hosts. - Erstelle ein Playbook oder passe ein bestehendes Beispiel an.
- Nutze ein geeignetes
ansible.builtin-Modul. - Führe Syntaxcheck, Check Mode, echten Lauf und zweiten Lauf aus.
- Dokumentiere Play Recap, relevante Ausgabe und eine kurze Bewertung.
Erwartetes Ergebnis
- Das Playbook ist syntaktisch korrekt.
- Die Zielhosts sind eindeutig.
- Der zweite Lauf meldet keine unnötigen Änderungen.
- Risiken und Grenzen sind dokumentiert.
Aufgabe 5: Molecule
Vertiefung und Abgabebeispiel zu Aufgabe 5: Molecule
Eine vollständige Bearbeitung von Aufgabe 5: Molecule besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Aufgabe 5: Molecule
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Aufgabe 5: Molecule
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Aufgabe 5: Molecule zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Aufgabe 5: Molecule
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Aufgabe 5: Molecule immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Aufgabe 5: Molecule
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Aufgabe 5: Molecule
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Aufgabe 5: Molecule
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Aufgabe 5: Molecule
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Ziel
Du wendest Molecule in einem kleinen, ungefährlichen Lab an und dokumentierst Scope, Umsetzung, Ergebnis und Rückbau.
Arbeitsauftrag
- Erstelle oder prüfe ein passendes Inventory.
- Beweise den Zielscope mit
--list-hosts. - Erstelle ein Playbook oder passe ein bestehendes Beispiel an.
- Nutze ein geeignetes
ansible.builtin-Modul. - Führe Syntaxcheck, Check Mode, echten Lauf und zweiten Lauf aus.
- Dokumentiere Play Recap, relevante Ausgabe und eine kurze Bewertung.
Erwartetes Ergebnis
- Das Playbook ist syntaktisch korrekt.
- Die Zielhosts sind eindeutig.
- Der zweite Lauf meldet keine unnötigen Änderungen.
- Risiken und Grenzen sind dokumentiert.
Aufgabe 6: Dynamic Inventory
Vertiefung und Abgabebeispiel zu Aufgabe 6: Dynamic Inventory
Eine vollständige Bearbeitung von Aufgabe 6: Dynamic Inventory besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Aufgabe 6: Dynamic Inventory
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Aufgabe 6: Dynamic Inventory
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Aufgabe 6: Dynamic Inventory zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Aufgabe 6: Dynamic Inventory
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Aufgabe 6: Dynamic Inventory immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Aufgabe 6: Dynamic Inventory
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Aufgabe 6: Dynamic Inventory
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Aufgabe 6: Dynamic Inventory
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Aufgabe 6: Dynamic Inventory
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Ziel
Du wendest Dynamic Inventory in einem kleinen, ungefährlichen Lab an und dokumentierst Scope, Umsetzung, Ergebnis und Rückbau.
Arbeitsauftrag
- Erstelle oder prüfe ein passendes Inventory.
- Beweise den Zielscope mit
--list-hosts. - Erstelle ein Playbook oder passe ein bestehendes Beispiel an.
- Nutze ein geeignetes
ansible.builtin-Modul. - Führe Syntaxcheck, Check Mode, echten Lauf und zweiten Lauf aus.
- Dokumentiere Play Recap, relevante Ausgabe und eine kurze Bewertung.
Erwartetes Ergebnis
- Das Playbook ist syntaktisch korrekt.
- Die Zielhosts sind eindeutig.
- Der zweite Lauf meldet keine unnötigen Änderungen.
- Risiken und Grenzen sind dokumentiert.
Aufgabe 7: Orchestrierung
Vertiefung und Abgabebeispiel zu Aufgabe 7: Orchestrierung
Eine vollständige Bearbeitung von Aufgabe 7: Orchestrierung besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Aufgabe 7: Orchestrierung
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Aufgabe 7: Orchestrierung
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Aufgabe 7: Orchestrierung zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Aufgabe 7: Orchestrierung
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Aufgabe 7: Orchestrierung immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Aufgabe 7: Orchestrierung
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Aufgabe 7: Orchestrierung
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Aufgabe 7: Orchestrierung
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Aufgabe 7: Orchestrierung
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Ziel
Du wendest Orchestrierung in einem kleinen, ungefährlichen Lab an und dokumentierst Scope, Umsetzung, Ergebnis und Rückbau.
Arbeitsauftrag
- Erstelle oder prüfe ein passendes Inventory.
- Beweise den Zielscope mit
--list-hosts. - Erstelle ein Playbook oder passe ein bestehendes Beispiel an.
- Nutze ein geeignetes
ansible.builtin-Modul. - Führe Syntaxcheck, Check Mode, echten Lauf und zweiten Lauf aus.
- Dokumentiere Play Recap, relevante Ausgabe und eine kurze Bewertung.
Erwartetes Ergebnis
- Das Playbook ist syntaktisch korrekt.
- Die Zielhosts sind eindeutig.
- Der zweite Lauf meldet keine unnötigen Änderungen.
- Risiken und Grenzen sind dokumentiert.
Aufgabe 8: Runbooks
Vertiefung und Abgabebeispiel zu Aufgabe 8: Runbooks
Eine vollständige Bearbeitung von Aufgabe 8: Runbooks besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Aufgabe 8: Runbooks
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Aufgabe 8: Runbooks
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Aufgabe 8: Runbooks zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Aufgabe 8: Runbooks
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Aufgabe 8: Runbooks immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Aufgabe 8: Runbooks
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Aufgabe 8: Runbooks
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Aufgabe 8: Runbooks
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Aufgabe 8: Runbooks
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Ziel
Du wendest Runbooks in einem kleinen, ungefährlichen Lab an und dokumentierst Scope, Umsetzung, Ergebnis und Rückbau.
Arbeitsauftrag
- Erstelle oder prüfe ein passendes Inventory.
- Beweise den Zielscope mit
--list-hosts. - Erstelle ein Playbook oder passe ein bestehendes Beispiel an.
- Nutze ein geeignetes
ansible.builtin-Modul. - Führe Syntaxcheck, Check Mode, echten Lauf und zweiten Lauf aus.
- Dokumentiere Play Recap, relevante Ausgabe und eine kurze Bewertung.
Erwartetes Ergebnis
- Das Playbook ist syntaktisch korrekt.
- Die Zielhosts sind eindeutig.
- Der zweite Lauf meldet keine unnötigen Änderungen.
- Risiken und Grenzen sind dokumentiert.
6. Teil B: Musterlösungen
Vertiefung und Abgabebeispiel zu Teil B: Musterlösungen
Eine vollständige Bearbeitung von Teil B: Musterlösungen besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Teil B: Musterlösungen
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Teil B: Musterlösungen
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Teil B: Musterlösungen zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Teil B: Musterlösungen
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Teil B: Musterlösungen immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Teil B: Musterlösungen
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Teil B: Musterlösungen
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Teil B: Musterlösungen
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Teil B: Musterlösungen
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Musterlösung 1: Repository-Standards
Vertiefung und Abgabebeispiel zu Musterlösung 1: Repository-Standards
Eine vollständige Bearbeitung von Musterlösung 1: Repository-Standards besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Musterlösung 1: Repository-Standards
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Musterlösung 1: Repository-Standards
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Musterlösung 1: Repository-Standards zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Musterlösung 1: Repository-Standards
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Musterlösung 1: Repository-Standards immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Musterlösung 1: Repository-Standards
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Musterlösung 1: Repository-Standards
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Musterlösung 1: Repository-Standards
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Musterlösung 1: Repository-Standards
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Eine gute Lösung zeigt zuerst den Scope:
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
Danach folgen Syntaxcheck und Vorschau:
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Der echte Lauf wird mit einem zweiten Lauf verglichen. Abweichungen sind akzeptabel, wenn sie technisch begründet sind, zum Beispiel wenn ein Modul Check Mode nur teilweise unterstützt. Secrets werden nicht ausgegeben und nicht in Git gespeichert.
Musterlösung 2: Collections
Vertiefung und Abgabebeispiel zu Musterlösung 2: Collections
Eine vollständige Bearbeitung von Musterlösung 2: Collections besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Musterlösung 2: Collections
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Musterlösung 2: Collections
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Musterlösung 2: Collections zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Musterlösung 2: Collections
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Musterlösung 2: Collections immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Musterlösung 2: Collections
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Musterlösung 2: Collections
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Musterlösung 2: Collections
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Musterlösung 2: Collections
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Eine gute Lösung zeigt zuerst den Scope:
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
Danach folgen Syntaxcheck und Vorschau:
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Der echte Lauf wird mit einem zweiten Lauf verglichen. Abweichungen sind akzeptabel, wenn sie technisch begründet sind, zum Beispiel wenn ein Modul Check Mode nur teilweise unterstützt. Secrets werden nicht ausgegeben und nicht in Git gespeichert.
Musterlösung 3: CI
Vertiefung und Abgabebeispiel zu Musterlösung 3: CI
Eine vollständige Bearbeitung von Musterlösung 3: CI besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Musterlösung 3: CI
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Musterlösung 3: CI
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Musterlösung 3: CI zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Musterlösung 3: CI
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Musterlösung 3: CI immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Musterlösung 3: CI
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Musterlösung 3: CI
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Musterlösung 3: CI
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Musterlösung 3: CI
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Eine gute Lösung zeigt zuerst den Scope:
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
Danach folgen Syntaxcheck und Vorschau:
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Der echte Lauf wird mit einem zweiten Lauf verglichen. Abweichungen sind akzeptabel, wenn sie technisch begründet sind, zum Beispiel wenn ein Modul Check Mode nur teilweise unterstützt. Secrets werden nicht ausgegeben und nicht in Git gespeichert.
Musterlösung 4: ansible-lint
Vertiefung und Abgabebeispiel zu Musterlösung 4: ansible-lint
Eine vollständige Bearbeitung von Musterlösung 4: ansible-lint besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Musterlösung 4: ansible-lint
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Musterlösung 4: ansible-lint
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Musterlösung 4: ansible-lint zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Musterlösung 4: ansible-lint
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Musterlösung 4: ansible-lint immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Musterlösung 4: ansible-lint
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Musterlösung 4: ansible-lint
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Musterlösung 4: ansible-lint
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Musterlösung 4: ansible-lint
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Eine gute Lösung zeigt zuerst den Scope:
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
Danach folgen Syntaxcheck und Vorschau:
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Der echte Lauf wird mit einem zweiten Lauf verglichen. Abweichungen sind akzeptabel, wenn sie technisch begründet sind, zum Beispiel wenn ein Modul Check Mode nur teilweise unterstützt. Secrets werden nicht ausgegeben und nicht in Git gespeichert.
Musterlösung 5: Molecule
Vertiefung und Abgabebeispiel zu Musterlösung 5: Molecule
Eine vollständige Bearbeitung von Musterlösung 5: Molecule besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Musterlösung 5: Molecule
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Musterlösung 5: Molecule
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Musterlösung 5: Molecule zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Musterlösung 5: Molecule
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Musterlösung 5: Molecule immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Musterlösung 5: Molecule
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Musterlösung 5: Molecule
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Musterlösung 5: Molecule
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Musterlösung 5: Molecule
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Eine gute Lösung zeigt zuerst den Scope:
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
Danach folgen Syntaxcheck und Vorschau:
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Der echte Lauf wird mit einem zweiten Lauf verglichen. Abweichungen sind akzeptabel, wenn sie technisch begründet sind, zum Beispiel wenn ein Modul Check Mode nur teilweise unterstützt. Secrets werden nicht ausgegeben und nicht in Git gespeichert.
Musterlösung 6: Dynamic Inventory
Vertiefung und Abgabebeispiel zu Musterlösung 6: Dynamic Inventory
Eine vollständige Bearbeitung von Musterlösung 6: Dynamic Inventory besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Musterlösung 6: Dynamic Inventory
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Musterlösung 6: Dynamic Inventory
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Musterlösung 6: Dynamic Inventory zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Musterlösung 6: Dynamic Inventory
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Musterlösung 6: Dynamic Inventory immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Musterlösung 6: Dynamic Inventory
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Musterlösung 6: Dynamic Inventory
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Musterlösung 6: Dynamic Inventory
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Musterlösung 6: Dynamic Inventory
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Eine gute Lösung zeigt zuerst den Scope:
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
Danach folgen Syntaxcheck und Vorschau:
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Der echte Lauf wird mit einem zweiten Lauf verglichen. Abweichungen sind akzeptabel, wenn sie technisch begründet sind, zum Beispiel wenn ein Modul Check Mode nur teilweise unterstützt. Secrets werden nicht ausgegeben und nicht in Git gespeichert.
Musterlösung 7: Orchestrierung
Vertiefung und Abgabebeispiel zu Musterlösung 7: Orchestrierung
Eine vollständige Bearbeitung von Musterlösung 7: Orchestrierung besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Musterlösung 7: Orchestrierung
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Musterlösung 7: Orchestrierung
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Musterlösung 7: Orchestrierung zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Musterlösung 7: Orchestrierung
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Musterlösung 7: Orchestrierung immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Musterlösung 7: Orchestrierung
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Musterlösung 7: Orchestrierung
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Musterlösung 7: Orchestrierung
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Musterlösung 7: Orchestrierung
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Eine gute Lösung zeigt zuerst den Scope:
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
Danach folgen Syntaxcheck und Vorschau:
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Der echte Lauf wird mit einem zweiten Lauf verglichen. Abweichungen sind akzeptabel, wenn sie technisch begründet sind, zum Beispiel wenn ein Modul Check Mode nur teilweise unterstützt. Secrets werden nicht ausgegeben und nicht in Git gespeichert.
Musterlösung 8: Runbooks
Vertiefung und Abgabebeispiel zu Musterlösung 8: Runbooks
Eine vollständige Bearbeitung von Musterlösung 8: Runbooks besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Musterlösung 8: Runbooks
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Musterlösung 8: Runbooks
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Musterlösung 8: Runbooks zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Musterlösung 8: Runbooks
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Musterlösung 8: Runbooks immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Musterlösung 8: Runbooks
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Musterlösung 8: Runbooks
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Musterlösung 8: Runbooks
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Musterlösung 8: Runbooks
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Eine gute Lösung zeigt zuerst den Scope:
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
Danach folgen Syntaxcheck und Vorschau:
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Der echte Lauf wird mit einem zweiten Lauf verglichen. Abweichungen sind akzeptabel, wenn sie technisch begründet sind, zum Beispiel wenn ein Modul Check Mode nur teilweise unterstützt. Secrets werden nicht ausgegeben und nicht in Git gespeichert.
7. Bewertungsraster
Vertiefung und Abgabebeispiel zu Bewertungsraster
Eine vollständige Bearbeitung von Bewertungsraster besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Bewertungsraster
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Bewertungsraster
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Bewertungsraster zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Bewertungsraster
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Bewertungsraster immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Bewertungsraster
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Bewertungsraster
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Bewertungsraster
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Bewertungsraster
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
| Kriterium | Punkte |
|---|---|
| Scope geprüft | 20 |
| Modulwahl und Idempotenz | 25 |
| Check/Diff/Evidence | 20 |
| Security und Secrets | 20 |
| Dokumentation und Rückbau | 15 |
8. Rückbau
Vertiefung und Abgabebeispiel zu Rückbau
Eine vollständige Bearbeitung von Rückbau besteht aus einem technischen Artefakt und einer kurzen fachlichen Einordnung. Das Artefakt kann ein Inventory, ein Playbook, eine Rolle, ein Template, eine Vault-Datei mit Dummy-Werten, eine CI-Konfiguration oder eine Evidence-Datei sein. Die Einordnung erklärt, warum dieser Weg gewählt wurde und welche Alternative bewusst nicht verwendet wurde.
| Abgabeteil | Inhalt | Mindestqualität |
|---|---|---|
| Zielbeschreibung | Was soll nach dem Lauf gelten? | messbar und ohne implizite Annahmen |
| Scope-Nachweis | Welche Hosts sind betroffen? | Ausgabe von --list-hosts oder Inventory-Graph |
| Umsetzung | Welche Dateien wurden geändert? | kleine, reviewbare YAML-Dateien |
| Validierung | Wie wurde geprüft? | Syntaxcheck, Check Mode, Diff, echter Lauf, zweiter Lauf |
| Risikoentscheidung | Was kann schiefgehen? | Rechte, Secrets, externe Abhängigkeiten und Rollback betrachtet |
Minimalartefakte für Rückbau
submission/
inventory/hosts.yml
playbooks/site.yml
evidence.md
cleanup.md
Für Rollen oder Collections wird die Struktur erweitert:
submission/
ansible.cfg
collections/requirements.yml
inventory/hosts.yml
roles/<role>/defaults/main.yml
roles/<role>/tasks/main.yml
roles/<role>/handlers/main.yml
playbooks/site.yml
evidence.md
Prüferwartung für Rückbau
Eine prüfbare Lösung muss auch für Personen verständlich sein, die den Lauf nicht selbst ausgeführt haben. Deshalb reichen Screenshots oder unkommentierte Terminalausgaben nicht aus. Gute Evidence beschreibt Kontext, Kommando, relevante Ausgabe und Bewertung. Wenn ein Modul im Check Mode abweicht, wird diese Einschränkung ausdrücklich genannt.
Transfer in reale Teams
Im Teamkontext wird Rückbau zusätzlich mit Code Review, Branch-Regeln, CI, Rollenownership, Release-Notizen und Betriebsfreigabe verbunden. Für produktionsnahe Nutzung werden außerdem Zuständigkeit, Wartungsfenster, Monitoring, Alarmierung und Rollback-Kriterien dokumentiert.
Praxisbezug zu Rückbau
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Rückbau immer an einem konkreten Ablauf überprüft: Inventory lesen, Zielhosts beweisen, Playbook prüfen, Änderung simulieren, Änderung ausführen, zweiten Lauf bewerten und Rückbau dokumentieren. Dadurch wird sichtbar, ob Ansible wirklich einen Zielzustand beschreibt oder nur zufällig einen Befehl erfolgreich ausgeführt hat.
| Prüffrage | Erwartete Antwort |
|---|---|
| Welche Hosts sind betroffen? | Pattern, Gruppe, --limit und Inventory-Ausgabe sind dokumentiert. |
| Welche Datenquellen wirken? | group_vars, host_vars, Defaults, Extra Vars und Facts sind bekannt. |
| Welche Rechte werden benötigt? | become ist tasknah und fachlich begründet. |
| Wie wird Erfolg bewiesen? | Syntaxcheck, Check Mode, Diff, Play Recap und zweiter Lauf liegen vor. |
Beispielablauf für Rückbau
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
Der Ablauf ist bewusst vollständig. In echten Teams werden einzelne Schritte oft automatisiert, aber nicht übersprungen. CI kann Syntaxcheck und Linting übernehmen; die fachliche Bewertung von Scope, Rechten, Secret-Flows und Rollout-Risiko bleibt eine Review-Aufgabe.
Review-Kriterien für Rückbau
- Inventory und Pattern sind enger als
all, sofern kein guter Grund dokumentiert ist. - Module aus
ansible.builtinoder klar geprüften Collections werden bevorzugt. - Shell- oder Command-Tasks haben
changed_when,failed_whenoder eine Begründung. - Variablen sind nachvollziehbar platziert und überschreiben sich nicht überraschend.
- Secrets erscheinen nicht in Klartext, Diff-Ausgaben, Debug-Tasks oder CI-Logs.
- Das Playbook kann mehrfach laufen, ohne unnötige Änderungen zu melden.
- Rückbau, Fix-forward oder kontrolliertes Belassen des Zielzustands ist dokumentiert.
Typische Fehler bei Rückbau
| Fehlerbild | Ursache | Diagnose |
|---|---|---|
| falsche Hosts getroffen | Pattern oder Inventory falsch verstanden | --list-hosts, ansible-inventory --host |
unreachable |
SSH, Benutzer, Python oder Netzwerkproblem | -vvvv, SSH-Test, Inventory-Variablen |
| unerwartete Änderung | Modul nicht idempotent oder falsche Datenquelle | zweiter Lauf, Diff, Variablenprüfung |
| Secret-Leak | Debug, Diff oder Log nicht begrenzt | no_log, Vault, CI-Artefakte prüfen |
| Handler läuft nicht | kein changed oder falscher Handlername |
Task-Ergebnis und Handler-Name prüfen |
Betriebsnotiz für Rückbau
Für produktionsnahe Nutzung muss aus dem Lab ein Runbook entstehen. Dieses Runbook nennt Zielsysteme, Verantwortliche, Vorbedingungen, Stop-Kriterien, erwartete Dauer, Validierung, Monitoring und Rückbau. Ohne diese Angaben bleibt ein Playbook technisch ausführbar, aber nicht betriebsreif.
Marker-Dateien unter /tmp, Dummy-Inventories und Lab-Artefakte werden entfernt oder klar als ungefährliche Übungsartefakte belassen.