Try / catch med rescue & always
Håndtér fejl på en elegant måde.
Try / catch med rescue & always er en gratis Ansible Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Ansible Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Ansible Academy-kurset indeholder 4 lektioner i alt.
Blocks får et sikkerhedsnet
Kombinér en block med rescue og always for at få try, catch og finally til dine opgaver. Fejl kan derefter håndteres. 🛟
rescue-sektionen
Hvis en opgave i blocken mislykkes, går Ansible til rescue og kører disse opgaver i stedet, ligesom en catch-klausul.
- block:
- ansible.builtin.command: /opt/risky-step
rescue:
- ansible.builtin.debug:
msg: "Step failed, recovering"always kører uanset hvad
Sektionen always køres, uanset om blocken lykkedes eller mislykkedes, hvilket er perfekt til oprydning som at fjerne en midlertidig fil.
- block:
- ansible.builtin.command: /opt/deploy
always:
- ansible.builtin.file:
path: /tmp/lock
state: absentAlle tre sammen
Brug block, rescue og always som én struktur: Prøv arbejdet, fang fejl, og afslut derefter altid korrekt.
- block:
- ansible.builtin.command: /opt/deploy
rescue:
- ansible.builtin.debug:
msg: "Rolling back"
always:
- ansible.builtin.debug:
msg: "Done either way"rescue nulstiller fejlen
Hvis rescue gennemføres uden fejl, er værten ikke længere markeret som mislykket. Playet fortsætter, som om blocken var lykkedes.
Kørselsrækkefølge
Opgaverne i blocken køres først. Ved en fejl springes resten af blocken over, og rescue starter. always køres sidst i alle tilfælde.
Når rescue selv mislykkes
Hvis en opgave i rescue også mislykkes, markeres værten som mislykket, men always køres stadig, før playet stopper for denne vært.
Undersøg fejlen
I rescue kan du læse ansible_failed_task og ansible_failed_result for at se, hvilken opgave der gik galt, og hvorfor.
- rescue:
- ansible.builtin.debug:
msg: "Failed task was {{ ansible_failed_task.name }}"En praktisk anvendelse: tilbagerulning
Det klassiske mønster er at placere udrulningen i en block, fortryde ændringen i rescue og genstarte eller låse op i always. Ren gendannelse ved hver kørsel.
Det handler ikke kun om at skjule fejl
rescue bruges til elegant gendannelse, ikke til at tie fejl ihjel. Log fejlen, og ret tilstanden. Lad som om intet gik galt. ⚠️
Uden rescue stopper det hårdt
Uden en rescue-sektion opfører en block med fejl sig som enhver anden opgave med fejl: Den stopper straks playet for denne vært.
Hurtigt tjek
Lad os bekræfte, hvordan always fungerer.
Opsamling
rescue fanger fejl i blocks og gendanner værten, mens always altid køres til oprydning. Try, catch og finally i Ansible. ✅
Lær YAML med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Try / catch med rescue & always” gratis?
Ja — hele teksten til “Try / catch med rescue & always” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Ansible Academy-kurset, skal du opgradere til CoddyKit PRO. Ansible Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Try / catch med rescue & always”?
Håndtér fejl på en elegant måde. Du øver dig i Ansible Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Ansible Academy?
Der kræves ingen tidligere erfaring. Ansible Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Try / catch med rescue & always”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Ansible Academy-lektion?
Ja. Alle Ansible Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Gruppér tasks med block
- Try / catch med rescue & always
- Styr fejl: failed_when & ignore_errors
- Brugerdefinerede assertions med modulet fail