Kiedy uruchamiają się handlery i flush_handlers
Kontrolowanie momentu uruchomienia handlerów na końcu play.
Kiedy uruchamiają się handlery i flush_handlers to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Handlery uruchamiają się na końcu
Domyślnie wszystkie powiadomione handlery uruchamiają się raz, na samym końcu playa, po zakończeniu każdego zadania. Nie w chwili otrzymania powiadomienia.
Dlaczego odkładać ich wykonanie
Odłożenie wykonania oznacza, że usługa zostanie uruchomiona ponownie raz, nawet po wielu zmianach konfiguracji. Pozwala to uniknąć niepotrzebnych restartów w trakcie playa i oszczędza czas.
Na hosta, nie globalnie
Czas wykonywania handlerów jest śledzony dla każdego hosta osobno. Każdy host uruchamia własne handlery z kolejki na końcu playa, niezależnie od pozostałych.
Problem z późnym restartem
Czasami późniejsze zadanie potrzebuje, aby usługa była już zrestartowana. Czekanie do końca playa jest wtedy zbyt późne, więc trzeba opróżnić kolejkę wcześniej.
Poznajemy flush_handlers
Zadanie meta flush_handlers wymusza natychmiastowe uruchomienie wszystkich oczekujących handlerów w środku playa.
- name: Run queued handlers now
ansible.builtin.meta: flush_handlersTo zadanie meta
flush_handlers to specjalne działanie meta, które steruje samym Ansible, zamiast modyfikować zdalny host.
Typowe zastosowanie
Zmień konfigurację, opróżnij kolejkę, aby usługa została zrestartowana, a następnie uruchom zadanie smoke test przeciwko świeżo zrestartowanej usłudze.
- 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/healthBłędy a handlery
Jeśli host zakończy działanie błędem przed końcem playa, jego oczekujące handlery zazwyczaj nie zostaną uruchomione. To jeden z powodów, dla których wcześniejsze opróżnienie kolejki może być bezpieczniejsze.
force_handlers jako zabezpieczenie
Ustaw force_handlers na true w playu, aby uruchamiać handlery z kolejki nawet wtedy, gdy host zakończy później działanie błędem. Jest to przydatne przy restartach wykonywanych w ramach porządkowania.
- hosts: web
force_handlers: true
tasks:
- ...Opróżniaj kolejkę oszczędnie
Po flush_handlers sięgaj tylko wtedy, gdy kolejność rzeczywiście tego wymaga. Nadmierne używanie tej funkcji odbiera korzyść z grupowania, jaką zapewniają handlery.
Oś czasu
Zadania wykonują się od góry do dołu, handlery czekają w kolejce, a następnie wszystkie uruchamiają się na końcu playa, chyba że zostaną wcześniej wymuszone. ⏱️
Szybkie sprawdzenie
Muszą Państwo zrestartować usługę w trakcie playa, aby późniejsze zadanie mogło się z nią połączyć. Czego należy użyć?
Podsumowanie
Handlery uruchamiają się zwykle raz na końcu playa, osobno dla każdego hosta. flush_handlers pozwala uruchomić je wcześniej, a force_handlers umożliwia ich wykonanie mimo błędów. 🚀
Często zadawane pytania
Czy lekcja „Kiedy uruchamiają się handlery i flush_handlers” jest bezpłatna?
Tak — pełny tekst „Kiedy uruchamiają się handlery i flush_handlers” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Kiedy uruchamiają się handlery i flush_handlers”?
Kontrolowanie momentu uruchomienia handlerów na końcu play. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Kiedy uruchamiają się handlery i flush_handlers”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Powiadamianie handlera o zmianie
- Definiowanie handlerów i wzorce restartu
- Kiedy uruchamiają się handlery i flush_handlers
- Listen: jeden wyzwalacz, wiele handlerów