0Pricing
Ansible Academy · Lektion

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: absent

Alle 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

  1. Tasks mit block gruppieren
  2. Try / Catch mit rescue und always
  3. Fehler steuern: failed_when und ignore_errors
  4. Eigene Assertions mit dem fail-Modul
← Zurück zu Ansible Academy