Ubuntu unter WSL: Ansible
Stand: 15. Juli 2026
Diese Anleitung richtet eine Ubuntu-WSL-Umgebung als Ansible Control Node ein. WSL eignet sich für CLI-, Inventory-, Playbook-, Rollen- und viele lokale Lab-Aufgaben.
1. Zweck
Vertiefung und Abgabebeispiel zu Zweck
Eine vollständige Bearbeitung von Zweck 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 Zweck
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 Zweck
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 Zweck 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 Zweck
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Zweck 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 Zweck
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 Zweck
- 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 Zweck
| 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 Zweck
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.
Zweck ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
2. Eignung und Grenzen
Vertiefung und Abgabebeispiel zu Eignung und Grenzen
Eine vollständige Bearbeitung von Eignung und Grenzen 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 Eignung und Grenzen
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 Eignung und Grenzen
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 Eignung und Grenzen 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 Eignung und Grenzen
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Eignung und Grenzen 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 Eignung und Grenzen
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 Eignung und Grenzen
- 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 Eignung und Grenzen
| 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 Eignung und Grenzen
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.
Eignung und Grenzen ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
3. Mindestanforderungen
Vertiefung und Abgabebeispiel zu Mindestanforderungen
Eine vollständige Bearbeitung von Mindestanforderungen 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 Mindestanforderungen
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 Mindestanforderungen
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 Mindestanforderungen 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 Mindestanforderungen
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Mindestanforderungen 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 Mindestanforderungen
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 Mindestanforderungen
- 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 Mindestanforderungen
| 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 Mindestanforderungen
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.
Mindestanforderungen ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
4. Vorbereitung
Vertiefung und Abgabebeispiel zu Vorbereitung
Eine vollständige Bearbeitung von Vorbereitung 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 Vorbereitung
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 Vorbereitung
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 Vorbereitung 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 Vorbereitung
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Vorbereitung 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 Vorbereitung
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 Vorbereitung
- 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 Vorbereitung
| 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 Vorbereitung
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.
Vorbereitung ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
5. Installation
Vertiefung und Abgabebeispiel zu Installation
Eine vollständige Bearbeitung von Installation 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 Installation
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 Installation
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 Installation 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 Installation
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Installation 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 Installation
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 Installation
- 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 Installation
| 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 Installation
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.
Installation ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
6. SSH und Schlüssel
Vertiefung und Abgabebeispiel zu SSH und Schlüssel
Eine vollständige Bearbeitung von SSH und Schlüssel 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 SSH und Schlüssel
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 SSH und Schlüssel
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 SSH und Schlüssel 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 SSH und Schlüssel
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird SSH und Schlüssel 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 SSH und Schlüssel
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 SSH und Schlüssel
- 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 SSH und Schlüssel
| 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 SSH und Schlüssel
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.
SSH und Schlüssel ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
7. Workshop-Artefakte prüfen
Vertiefung und Abgabebeispiel zur Prüfung der Workshop-Artefakte
Eine vollständige Bearbeitung dieses Schritts 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 die Prüfung der Workshop-Artefakte
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 die Workshop-Artefakte
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 die Arbeit mit Workshop-Artefakten 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 zur Prüfung der Workshop-Artefakte
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird die Prüfung der Workshop-Artefakte 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 zur Prüfung der Workshop-Artefakte
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 Workshop-Artefakte
- 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 der Prüfung der Workshop-Artefakte
| 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 zur Prüfung der Workshop-Artefakte
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.
Die Prüfung der Workshop-Artefakte ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
8. Provisionierung
Vertiefung und Abgabebeispiel zu Provisionierung
Eine vollständige Bearbeitung von Provisionierung 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 Provisionierung
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 Provisionierung
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 Provisionierung 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 Provisionierung
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Provisionierung 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 Provisionierung
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 Provisionierung
- 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 Provisionierung
| 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 Provisionierung
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.
Provisionierung ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
9. Validierung
Vertiefung und Abgabebeispiel zu Validierung
Eine vollständige Bearbeitung von Validierung 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 Validierung
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 Validierung
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 Validierung 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 Validierung
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Validierung 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 Validierung
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 Validierung
- 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 Validierung
| 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 Validierung
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.
Validierung ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
10. Typische WSL-Probleme
Vertiefung und Abgabebeispiel zu Typische WSL-Probleme
Eine vollständige Bearbeitung von Typische WSL-Probleme 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 Typische WSL-Probleme
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 Typische WSL-Probleme
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 Typische WSL-Probleme 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 Typische WSL-Probleme
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Typische WSL-Probleme 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 Typische WSL-Probleme
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 Typische WSL-Probleme
- 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 Typische WSL-Probleme
| 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 Typische WSL-Probleme
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.
Typische WSL-Probleme ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
11. Sicherheitsregeln
Vertiefung und Abgabebeispiel zu Sicherheitsregeln
Eine vollständige Bearbeitung von Sicherheitsregeln 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 Sicherheitsregeln
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 Sicherheitsregeln
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 Sicherheitsregeln 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 Sicherheitsregeln
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Sicherheitsregeln 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 Sicherheitsregeln
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 Sicherheitsregeln
- 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 Sicherheitsregeln
| 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 Sicherheitsregeln
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.
Sicherheitsregeln ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
12. Cleanup
Vertiefung und Abgabebeispiel zu Cleanup
Eine vollständige Bearbeitung von Cleanup 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 Cleanup
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 Cleanup
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 Cleanup 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 Cleanup
Dieser Abschnitt ist nicht als reine Begriffserklärung gedacht. Im Workshop wird Cleanup 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 Cleanup
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 Cleanup
- 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 Cleanup
| 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 Cleanup
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.
Cleanup ist ein praktischer Baustein des Ansible-Workshops. Entscheidend ist, dass der gewünschte Zustand nicht nur beschrieben, sondern vor und nach der Ausführung überprüft wird. Ein guter Ansible-Arbeitsablauf beantwortet immer vier Fragen: Welche Hosts sind betroffen, welche Änderung wird durchgeführt, welche Rechte werden dafür benötigt und wie wird der Erfolg gemessen?
| Aspekt | Bedeutung im Workshop | Prüfpunkt |
|---|---|---|
| Scope | Inventory, Pattern, --limit, Tags und Umgebung bestimmen die Zielsysteme. |
ansible-inventory --graph, ansible-playbook --list-hosts |
| Zustand | Module sollen Zielzustände modellieren und wiederholbare Ergebnisse liefern. | zweiter Lauf ohne unnötige Änderungen |
| Rechte | become wird tasknah und begründet eingesetzt. |
kein globales Privileg ohne Review |
| Evidence | Ausgaben, Diffs und Zusammenfassung werden dokumentiert. | Play Recap, Diff, Evidence-Datei |
Typische Kommandos:
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
Für Reviews gilt: Ein Playbook ist erst dann gut genug, wenn es seine Zielgruppe beweist, seine Datenquellen offenlegt, sensible Werte schützt, Fehlerpfade beschreibt und nach einem zweiten Lauf stabil bleibt. Wenn ein Modul Check Mode oder Diff Mode nicht vollständig unterstützt, muss die Einschränkung im Runbook stehen.
Typische Fehler in diesem Bereich sind zu breite Patterns wie all, unklare Variablenquellen, Shell-Workarounds ohne Idempotenz, Secrets in Debug-Ausgaben, fehlende Rollback-Notiz und fehlende Trennung zwischen Lab- und Produktionsinventory.
Quellen und weiterführende Referenzen
- Offizielle Ansible Community Documentation: https://docs.ansible.com/
- Ansible Getting Started: https://docs.ansible.com/projects/ansible/latest/getting_started/index.html
- Inventory Guide: https://docs.ansible.com/projects/ansible/latest/inventory_guide/index.html
- Playbook Guide: https://docs.ansible.com/projects/ansible/latest/playbook_guide/index.html
- Module Index: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html
- Vault Guide: https://docs.ansible.com/projects/ansible/latest/vault_guide/index.html
- Ansible Lint: https://ansible.readthedocs.io/projects/lint/
- Molecule: https://ansible.readthedocs.io/projects/molecule/
- AWX: https://github.com/ansible/awx
- Red Hat Certifications: https://www.redhat.com/en/services/certifications