Definiowanie handlerów i wzorce restartu
Pisanie wielokrotnego użytku handlerów restartujących usługę.
Definiowanie handlerów i wzorce restartu to bezpłatna lekcja Ansible Academy na CoddyKit. To lekcja 2 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 Ansible Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ansible Academy zawiera 4 lekcji w sumie.
Gdzie umieszcza się handlery
Handlery umieszcza się we własnej sekcji handlers playa, oddzielnie od zwykłych zadań. Dzięki temu działania reaktywne są wyraźnie pogrupowane.
tasks:
- name: Deploy config
ansible.builtin.template:
src: app.conf.j2
dest: /etc/app.conf
notify: Restart app
handlers:
- name: Restart app
ansible.builtin.service:
name: app
state: restartedHandler jest zadaniem
Handler używa dokładnie takiej samej składni jak zadanie: pola name i wywołania modułu. Jedyna różnica polega na tym, że czeka na powiadomienie.
name jest umową
Pole name handlera to ciąg znaków, do którego odwołują się inne zadania w notify. Należy traktować je jako stałą, dokładną etykietę przeznaczoną do ponownego użycia.
Restartowanie za pomocą service
Klasyczny handler restartujący używa modułu service ze stanem ustawionym na restarted. Zatrzymuje on jednostkę i uruchamia ją ponownie w jednym kroku.
- name: Restart nginx
ansible.builtin.service:
name: nginx
state: restartedPrzeładowanie a restart
Jeśli usługa to obsługuje, należy preferować stan reloaded. Przeładowanie ponownie odczytuje konfigurację bez zrywania połączeń, w przeciwieństwie do pełnego restartu.
- name: Reload nginx
ansible.builtin.service:
name: nginx
state: reloadedUżywaj systemd bezpośrednio
Moduł systemd zapewnia większą kontrolę na hostach korzystających z systemd, w tym możliwość użycia daemon_reload po zmianie pliku jednostki.
- name: Restart app
ansible.builtin.systemd:
name: app
state: restarted
daemon_reload: trueZachowuj handlery ogólne
Napisz jeden wielokrotnego użytku handler Uruchom ponownie nginx i powiadamiaj go z wielu zadań. Unikaj kopiowania tej samej logiki restartowania w wielu miejscach.
Handlery uruchamiają się w kolejności definicji
Gdy w kolejce znajduje się kilka handlerów, uruchamiają się w kolejności, w której zostały zdefiniowane, a nie w kolejności powiadomień. Należy odpowiednio zaplanować tę sekwencję.
Kolejność ma znaczenie dla zależności
Jeśli przeładowanie musi nastąpić przed restartem, należy zdefiniować je w tej kolejności na liście handlerów, aby kolejka została wykonana prawidłowo.
Handlery w rolach
W roli handlery znajdują się w pliku handlers/main.yml. Zadania w roli powiadamiają je po nazwie, dokładnie tak jak w zwykłym playbooku.
Nazwy zwiększające czytelność
Używaj nazw w formie działań, takich jak Uruchom ponownie nginx lub Przeładuj sshd. Jasne nazwy zwiększają czytelność danych wyjściowych i ułatwiają rozpoznawanie wierszy notify.
Szybkie sprawdzenie
Zmienili Państwo konfigurację i chcą, aby działająca usługa ją wczytała bez zrywania połączeń. Który stan jest najlepszy?
Podsumowanie
Potrafią już Państwo definiować handlery w sekcji handlers, wybierać między restartem a przeładowaniem oraz polegać na wykonywaniu w kolejności definicji. 🎯
Często zadawane pytania
Czy lekcja „Definiowanie handlerów i wzorce restartu” jest bezpłatna?
Tak — pełny tekst „Definiowanie handlerów i wzorce restartu” 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 Ansible Academy, przejdź na CoddyKit PRO. Kurs Ansible Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Definiowanie handlerów i wzorce restartu”?
Pisanie wielokrotnego użytku handlerów restartujących usługę. Ćwiczysz Ansible Academy 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ąć Ansible Academy?
Nie wymagamy żadnego doświadczenia. Ansible Academy 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 2 z 4.
Ile czasu zajmuje lekcja „Definiowanie handlerów i wzorce restartu”?
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 Ansible Academy?
Tak. Każda lekcja Ansible Academy 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