Styr fel: failed_when och ignore_errors
Definiera vad som räknas som ett fel
Styr fel: failed_when och ignore_errors är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Du bestämmer vad som räknas som ett fel
Ansible markerar en task som misslyckad vid en returkod som inte är noll, men det kan du ändra. Med två nyckelord kan du omdefiniera vad som räknas som ett fel. 🎛️
ignore_errors fortsätter körningen
Ställ in ignore_errors på true så loggas en misslyckad task, men play-körningen stoppas inte. Värden förblir en del av play-körningen.
- name: Try optional cleanup
ansible.builtin.command: /opt/maybe-missing
ignore_errors: trueDen visas fortfarande som misslyckad
ignore_errors döljer inte felet; utdata visar fortfarande FAILED. Det hindrar bara felet från att stoppa senare tasker.
failed_when omdefinierar fel
Använd failed_when för att ange ditt eget felvillkor. Tasken misslyckas endast när ditt uttryck är sant.
- name: Check status
ansible.builtin.command: /opt/healthcheck
register: result
failed_when: result.rc > 1Kombinera med register
failed_when granskar vanligtvis ett registrerat resultat: dess rc, stdout eller stderr. Fånga utdata först och bedöm den sedan.
- ansible.builtin.command: grep ERROR app.log
register: out
failed_when: "'CRITICAL' in out.stdout"Låt aldrig den här tasken misslyckas
Ställ in failed_when på false så kan tasken aldrig misslyckas, inte ens vid en kod som inte är noll. Det är renare än ignore_errors för kommandon med kända och förväntade felmeddelanden.
- ansible.builtin.command: pkill myapp
failed_when: falseMatcha flera villkor
failed_when kan ta emot en lista med villkor som binds samman med and, eller ett sammansatt uttryck med or för mer avancerade regler.
failed_when:
- result.rc != 0
- "'skipped' not in result.stdout"changed_when är en släkting
Det närliggande changed_when styr statusen för ändring i stället för misslyckande. Det är användbart när en kommandotask ska markeras som aldrig ändrad.
- ansible.builtin.command: /opt/report
changed_when: falseignore jämfört med failed_when
Använd failed_when när du kan beskriva lyckat resultat exakt; använd bara ignore_errors för steg som verkligen är valfria och körs med bästa möjliga försök.
Fungerar bra med rescue
I stället för att ignorera fel kan du låta ett verkligt fel utlösa ett rescue-block. Då får du återställning i stället för att steget hoppas över i tysthet. 🤝
Båda gäller per task
Både failed_when och ignore_errors anges på en enskild task, inte för en hel play-körning. Varje task bestämmer själv hur fel ska hanteras.
Snabb kontroll
Låt oss jämföra de två nyckelorden.
Sammanfattning
failed_when definierar exakt när en task misslyckas, medan ignore_errors låter play-körningen fortsätta efter ett fel. Det är du som bestämmer reglerna. ✅
Lär dig DevOps-bootcamp med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Styr fel: failed_when och ignore_errors” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Styr fel: failed_when och ignore_errors”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Styr fel: failed_when och ignore_errors”?
Definiera vad som räknas som ett fel Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Styr fel: failed_when och ignore_errors”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Gruppera uppgifter med block
- Try / catch med rescue och always
- Styr fel: failed_when och ignore_errors
- Anpassade assertioner med modulen fail