Wann Handler ausgeführt werden und flush_handlers
Steuern Sie den Zeitpunkt der Handler-Ausführung am Play-Ende.
Wann Handler ausgeführt werden und flush_handlers ist eine kostenlose Ansible Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ansible Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ansible Academy-Kurs umfasst insgesamt 4 Lektionen.
Handler werden am Ende ausgeführt
Standardmäßig werden alle benachrichtigten Handler einmal ganz am Ende des Plays ausgeführt, nachdem jede Task abgeschlossen ist. Nicht in dem Moment, in dem sie benachrichtigt wurden.
Warum werden sie verzögert?
Durch die Verzögerung wird ein Dienst auch nach vielen Konfigurationsänderungen nur einmal neu gestartet. Das vermeidet unnötige Neustarts während des Plays und spart Zeit.
Pro Host, nicht global
Der Zeitpunkt der Handlerausführung wird pro Host verwaltet. Jeder Host führt seine eigene Warteschlange am Ende des Plays unabhängig von den anderen ab.
Das Problem des späten Neustarts
Manchmal benötigt eine spätere Task den bereits neu gestarteten Dienst. Wenn Sie bis zum Ende des Plays warten, ist es zu spät. Daher müssen Sie die Handler vorzeitig ausführen.
Lernen Sie flush_handlers kennen
Die Meta-Task flush_handlers erzwingt die sofortige Ausführung aller ausstehenden Handler, mitten im Play.
- name: Run queued handlers now
ansible.builtin.meta: flush_handlersEs ist eine meta-Task
flush_handlers ist eine spezielle meta-Aktion, die Ansible selbst steuert, statt den entfernten Host zu verändern.
Eine typische Verwendung
Ändern Sie die Konfiguration, führen Sie flush aus, damit der Dienst neu gestartet wird, und führen Sie anschließend eine Smoke-Test-Task für den frisch neu gestarteten Dienst aus.
- 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/healthFehler und Handler
Wenn ein Host vor dem Ende des Plays fehlschlägt, werden seine ausstehenden Handler normalerweise nicht ausgeführt. Das ist ein Grund, warum ein vorzeitiges flush sicherer sein kann.
force_handlers als Sicherheitsnetz
Setzen Sie force_handlers in einem Play auf true, damit vorgemerkte Handler auch dann ausgeführt werden, wenn ein Host später fehlschlägt. Das ist für Neustarts zur Bereinigung nützlich.
- hosts: web
force_handlers: true
tasks:
- ...Flush sparsam einsetzen
Verwenden Sie flush_handlers nur, wenn die Reihenfolge dies wirklich erfordert. Eine übermäßige Verwendung nimmt Ihnen den Vorteil der Bündelung, den Handler bieten.
Der zeitliche Ablauf
Tasks werden von oben nach unten ausgeführt, Handler warten in einer Warteschlange und werden dann am Ende des Plays gemeinsam ausgeführt, sofern Sie sie nicht früher per flush ausführen. ⏱️
Schnelltest
Sie müssen einen Dienst mitten im Play neu starten, damit eine spätere Task ihn erreichen kann. Was verwenden Sie?
Zusammenfassung
Handler werden normalerweise pro Host einmal am Ende des Plays ausgeführt. Verwenden Sie flush_handlers, um sie vorzeitig auszuführen, und force_handlers, damit sie auch bei Fehlern ausgeführt werden. 🚀
Häufig gestellte Fragen
Ist die Lektion „Wann Handler ausgeführt werden und flush_handlers“ kostenlos?
Ja — der vollständige Text von „Wann Handler ausgeführt werden und flush_handlers“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ansible Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ansible Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Wann Handler ausgeführt werden und flush_handlers“?
Steuern Sie den Zeitpunkt der Handler-Ausführung am Play-Ende. Du übst Ansible Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Ansible Academy zu starten?
Keine Vorkenntnisse erforderlich. Ansible Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Wann Handler ausgeführt werden und flush_handlers“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Ansible Academy-Lektion Code schreiben und ausführen?
Ja. Jede Ansible Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Bei Änderungen einen Handler benachrichtigen
- Handler definieren und Neustartmuster
- Wann Handler ausgeführt werden und flush_handlers
- Listen: Ein Trigger, mehrere Handler