Kontrolowanie błędów: failed_when i ignore_errors
Definiowanie, co oznacza niepowodzenie.
Kontrolowanie błędów: failed_when i ignore_errors to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
To Państwo decydują, co oznacza niepowodzenie
Ansible uznaje zadanie za nieudane, gdy zwróci ono niezerowy kod wyjścia, ale można to zmienić. Dwa słowa kluczowe pozwalają na nowo zdefiniować niepowodzenie. 🎛️
ignore_errors pozwala działać dalej
Ustawienie ignore_errors na true powoduje, że nieudane zadanie zostaje odnotowane, ale nie przerywa play. Host nadal uczestniczy w play.
- name: Try optional cleanup
ansible.builtin.command: /opt/maybe-missing
ignore_errors: trueNadal jest oznaczone jako nieudane
ignore_errors nie ukrywa niepowodzenia — w danych wyjściowych nadal widnieje FAILED. Zapobiega jedynie zatrzymaniu kolejnych zadań przez niepowodzenie.
failed_when redefiniuje niepowodzenie
Użyj failed_when, aby określić własny warunek niepowodzenia. Zadanie zakończy się niepowodzeniem tylko wtedy, gdy wyrażenie będzie miało wartość true.
- name: Check status
ansible.builtin.command: /opt/healthcheck
register: result
failed_when: result.rc > 1Połącz z register
failed_when zwykle sprawdza zarejestrowany wynik: jego rc, stdout lub stderr. Najpierw przechwyć dane wyjściowe, a następnie je oceń.
- ansible.builtin.command: grep ERROR app.log
register: out
failed_when: "'CRITICAL' in out.stdout"To zadanie nigdy nie kończy się niepowodzeniem
Ustaw failed_when na false, a zadanie nigdy nie zakończy się niepowodzeniem, nawet przy niezerowym kodzie. W przypadku znanych, hałaśliwych poleceń jest to rozwiązanie bardziej przejrzyste niż ignore_errors.
- ansible.builtin.command: pkill myapp
failed_when: falseDopasuj wiele warunków
failed_when może przyjmować listę warunków połączonych za pomocą and albo złożone wyrażenie zawierające or, co pozwala tworzyć bardziej rozbudowane reguły.
failed_when:
- result.rc != 0
- "'skipped' not in result.stdout"changed_when jest spokrewnione
Powiązane changed_when steruje statusem changed zamiast niepowodzeniem. Przydaje się na przykład do oznaczenia, że zadanie wykonujące polecenie nigdy nie wprowadza zmian.
- ansible.builtin.command: /opt/report
changed_when: falseignore a failed_when
Sięgaj po failed_when, gdy można precyzyjnie opisać powodzenie; ignore_errors stosuj tylko w przypadku rzeczywiście opcjonalnych kroków wykonywanych w trybie best effort.
Dobrze współpracuje z rescue
Zamiast ignorować błędy pozwól, aby prawdziwe niepowodzenie uruchomiło blok rescue. Otrzymasz mechanizm odzyskiwania zamiast cichego pominięcia. 🤝
Oba dotyczą pojedynczego zadania
Zarówno failed_when, jak i ignore_errors dotyczą pojedynczego zadania, a nie całego play. Każde zadanie samodzielnie określa sposób obsługi własnego niepowodzenia.
Szybki test
Porównajmy oba słowa kluczowe.
Podsumowanie
failed_when dokładnie określa, kiedy zadanie kończy się niepowodzeniem, natomiast ignore_errors pozwala kontynuować play mimo niepowodzenia. To Państwo definiują reguły. ✅
Często zadawane pytania
Czy lekcja „Kontrolowanie błędów: failed_when i ignore_errors” jest bezpłatna?
Tak — pełny tekst „Kontrolowanie błędów: failed_when i ignore_errors” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Kontrolowanie błędów: failed_when i ignore_errors”?
Definiowanie, co oznacza niepowodzenie. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Kontrolowanie błędów: failed_when i ignore_errors”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Grupowanie zadań za pomocą block
- Try / catch z rescue i always
- Kontrolowanie błędów: failed_when i ignore_errors
- Własne asercje za pomocą modułu fail