0Pricing
DevOps Bootcamp · Lezione

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 DevOps Bootcamp 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 DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp 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/health

Errori 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 DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp 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 DevOps Bootcamp 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 DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp 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 DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp 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

  1. Notificare un handler in caso di modifica
  2. Definire gli handler e i modelli di riavvio
  3. Quando vengono eseguiti gli handler e flush_handlers
  4. Listen: un trigger, molti handler
← Torna a DevOps Bootcamp