DevOps-bootcamp · Lektion

När handlers körs och flush_handlers

Styr när handlers körs i slutet av en play

Lektion 3 av 413 steg

När handlers körs och flush_handlers ä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.

Handlers körs i slutet

Som standard körs alla notifierade handlers en gång, allra sist i playen, efter att varje task har slutförts. Inte i det ögonblick då de notifierades.

Varför skjuta upp dem

Genom att skjuta upp dem startas en tjänst om en gång, även efter många konfigurationsändringar. Det undviker onödiga omstarter mitt i playen och sparar tid.

Per värd, inte globalt

Tidpunkten för handlers hanteras per värd. Varje värd kör sina egna köade handlers i slutet av playen, oberoende av de andra.

Problemet med sena omstarter

Ibland behöver en senare task att tjänsten redan har startats om. Att vänta till slutet av playen är för sent, så du måste tömma kön tidigare.

Möt flush_handlers

Metatasken flush_handlers tvingar alla väntande handlers att köras direkt, mitt i playen.

- name: Run queued handlers now
  ansible.builtin.meta: flush_handlers

Det är en meta-task

flush_handlers är en särskild meta-åtgärd som styr själva Ansible i stället för att påverka fjärrvärden.

Ett typiskt användningsfall

Ändra konfigurationen, töm kön så att tjänsten startas om och kör sedan en task med ett smoke test mot den nyligen omstartade tjänsten.

- name: Update config
  ansible.builtin.template:
    src: app.j2
    dest: /etc/app.conf
  notify: Restart app
- ansible.builtin.meta: flush_handlers
- name: Check health
  ansible.builtin.uri:
    url: http://localhost/health

Fel och handlers

Om en värd får ett fel innan playen är slut körs dess väntande handlers normalt inte. Det är en anledning till att en tidig tömning kan vara säkrare.

force_handlers som skyddsnät

Sätt force_handlers till true i en play för att köra köade handlers även när en värd får ett senare fel. Användbart för omstarter vid städning.

- hosts: web
  force_handlers: true
  tasks:
    - ...

Töm kön sparsamt

Använd flush_handlers endast när ordningen verkligen kräver det. Överanvändning tar bort den batchning som handlers ger dig.

Tidslinjen

Tasks körs uppifrån och ned, handlers väntar i en kö och körs sedan alla i slutet av playen, om du inte tömmer kön tidigare. ⏱️

Snabb kontroll

Du måste starta om en tjänst mitt i playen så att en senare task kan använda den. Vad använder du?

Sammanfattning

Handlers körs normalt en gång i slutet av playen, per värd. Använd flush_handlers för att köra dem tidigare och force_handlers för att de ska köras även vid fel. 🚀

Gratis att börja

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 ”När handlers körs och flush_handlers” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”När handlers körs och flush_handlers”, 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 ”När handlers körs och flush_handlers”?

Styr när handlers körs i slutet av en play 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 ”När handlers körs och flush_handlers”?

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

  1. Meddela en handler vid ändring
  2. Definiera handlers och mönster för omstart
  3. När handlers körs och flush_handlers
  4. Listen: en utlösare, flera handlers
← Tillbaka till DevOps-bootcamp