Try / Catch mit rescue und always
Reagieren Sie sauber auf Fehler.
Try / Catch mit rescue und always ist eine kostenlose Ansible Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ansible Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ansible Academy-Kurs umfasst insgesamt 4 Lektionen.
Blöcke bekommen ein Sicherheitsnetz
Kombinieren Sie einen block mit rescue und always, um für Ihre Tasks try, catch und finally zu erhalten. Fehler lassen sich dadurch abfangen. 🛟
Der Abschnitt rescue
Wenn eine Task im Block fehlschlägt, springt Ansible zu rescue und führt stattdessen diese Tasks aus, ähnlich wie eine catch-Klausel.
- block:
- ansible.builtin.command: /opt/risky-step
rescue:
- ansible.builtin.debug:
msg: "Step failed, recovering"always wird unabhängig vom Ergebnis ausgeführt
Der Abschnitt always wird ausgeführt, unabhängig davon, ob der Block erfolgreich war oder fehlgeschlagen ist. Das eignet sich ideal für Bereinigungen, etwa zum Entfernen einer temporären Datei.
- block:
- ansible.builtin.command: /opt/deploy
always:
- ansible.builtin.file:
path: /tmp/lock
state: absentAlle drei gemeinsam
Verwenden Sie block, rescue und always als eine Struktur: Führen Sie die Arbeit aus, fangen Sie Fehler ab und schließen Sie anschließend immer sauber ab.
- block:
- ansible.builtin.command: /opt/deploy
rescue:
- ansible.builtin.debug:
msg: "Rolling back"
always:
- ansible.builtin.debug:
msg: "Done either way"rescue setzt den Fehlerstatus zurück
Wenn rescue erfolgreich abgeschlossen wird, gilt der Host nicht mehr als fehlgeschlagen. Das Play wird fortgesetzt, als wäre der Block erfolgreich gewesen.
Ausführungsreihenfolge
Zuerst werden die Tasks im Block ausgeführt. Bei einem Fehler wird der Rest des Blocks übersprungen und rescue gestartet. always wird in jedem Fall zuletzt ausgeführt.
Wenn rescue selbst fehlschlägt
Wenn auch eine Task in rescue fehlschlägt, wird der Host als fehlgeschlagen markiert. always wird jedoch noch ausgeführt, bevor das Play für diesen Host endet.
Den Fehler untersuchen
Innerhalb von rescue können Sie ansible_failed_task und ansible_failed_result lesen, um zu sehen, welche Task fehlgeschlagen ist und warum.
- rescue:
- ansible.builtin.debug:
msg: "Failed task was {{ ansible_failed_task.name }}"Ein praktischer Einsatz: Rollback
Das klassische Muster besteht darin, die Bereitstellung im block auszuführen, die Änderung in rescue rückgängig zu machen und in always neu zu starten oder zu entsperren. So gelingt eine saubere Wiederherstellung bei jedem Lauf.
Nicht nur Fehler verbergen
rescue dient der kontrollierten Wiederherstellung, nicht dem Verschweigen von Fehlern. Protokollieren Sie den Fehler und korrigieren Sie den Zustand, statt so zu tun, als wäre nichts passiert. ⚠️
Ohne rescue wird sofort abgebrochen
Ohne einen rescue-Abschnitt verhält sich ein fehlschlagender Block wie jede fehlschlagende Task: Das Play wird für diesen Host sofort beendet.
Kurzer Check
Bestätigen wir, wie always funktioniert.
Zusammenfassung
rescue fängt Fehler in Blöcken ab und stellt den Host wieder her, während always jedes Mal für Bereinigungen ausgeführt wird. Try, Catch und Finally für Ansible. ✅
Häufig gestellte Fragen
Ist die Lektion „Try / Catch mit rescue und always“ kostenlos?
Ja — der vollständige Text von „Try / Catch mit rescue und always“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ansible Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ansible Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Try / Catch mit rescue und always“?
Reagieren Sie sauber auf Fehler. Du übst Ansible Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Ansible Academy zu starten?
Keine Vorkenntnisse erforderlich. Ansible Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Try / Catch mit rescue und always“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Ansible Academy-Lektion Code schreiben und ausführen?
Ja. Jede Ansible Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Tasks mit block gruppieren
- Try / Catch mit rescue und always
- Fehler steuern: failed_when und ignore_errors
- Eigene Assertions mit dem fail-Modul