Quando vengono eseguiti gli handler e flush_handlers
Controlli la temporizzazione degli handler a fine play
Quando vengono eseguiti gli handler e flush_handlers è una lezione Ansible Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ansible Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ansible Academy include 4 lezioni in totale.
Gli handler vengono eseguiti alla fine
Per impostazione predefinita, tutti gli handler notificati vengono eseguiti una volta, proprio alla fine del play, dopo il completamento di ogni task. Non nel momento in cui ricevono la notifica.
Perché rimandarli?
Rimandare l'esecuzione significa che un servizio viene riavviato una sola volta, anche dopo molte modifiche alla configurazione. In questo modo si evitano riavvii inutili durante il play e si risparmia tempo.
Per host, non globalmente
La temporizzazione degli handler viene gestita per host. Ogni host esegue i propri handler accodati alla fine del play, indipendentemente dagli altri.
Il problema del riavvio tardivo
A volte un task successivo ha bisogno che il servizio sia già stato riavviato. Attendere la fine del play è troppo tardi, quindi occorre svuotare la coda in anticipo.
Ecco flush_handlers
Il meta task flush_handlers forza l'esecuzione immediata di tutti gli handler in attesa, nel mezzo del play.
- name: Run queued handlers now
ansible.builtin.meta: flush_handlersÈ un meta task
flush_handlers è un'azione speciale meta che controlla Ansible stesso invece di intervenire sull'host remoto.
Un utilizzo tipico
Modifichi la configurazione, esegua il flush affinché il servizio venga riavviato, quindi esegua un task di smoke test sul servizio appena riavviato.
- 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/healthErrori e handler
Se un host presenta un errore prima della fine del play, normalmente i suoi handler in attesa non vengono eseguiti. Questo è uno dei motivi per cui un flush anticipato può essere più sicuro.
force_handlers come rete di sicurezza
Imposti force_handlers su true in un play per eseguire gli handler accodati anche quando un host presenta un errore in seguito. È utile per i riavvii di pulizia.
- hosts: web
force_handlers: true
tasks:
- ...Utilizzi il flush con moderazione
Ricorra a flush_handlers solo quando l'ordine lo richiede davvero. Un uso eccessivo elimina il vantaggio del batching offerto dagli handler.
La sequenza temporale
I task vengono eseguiti dall'alto verso il basso, gli handler attendono in una coda, quindi vengono tutti attivati alla fine del play, a meno che non venga eseguito prima un flush. ⏱️
Controllo rapido
È necessario riavviare un servizio nel mezzo del play affinché un task successivo possa raggiungerlo. Che cosa utilizza?
Riepilogo
Gli handler vengono normalmente eseguiti una volta alla fine del play, per ogni host. Utilizzi flush_handlers per attivarli in anticipo e force_handlers per farli sopravvivere agli errori. 🚀
Domande Frequenti
La lezione «Quando vengono eseguiti gli handler e flush_handlers» è gratuita?
Sì — il testo completo di «Quando vengono eseguiti gli handler e flush_handlers» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ansible Academy, passa a CoddyKit PRO. Il corso Ansible Academy include 4 lezioni in totale.
Cosa imparerò in «Quando vengono eseguiti gli handler e flush_handlers»?
Controlli la temporizzazione degli handler a fine play Eserciti Ansible Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ansible Academy?
Non è richiesta alcuna esperienza precedente. Ansible Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Quando vengono eseguiti gli handler e flush_handlers»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ansible Academy?
Sì. Ogni lezione Ansible Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Notificare un handler in caso di modifica
- Definire gli handler e i modelli di riavvio
- Quando vengono eseguiti gli handler e flush_handlers
- Listen: un trigger, molti handler