0Pricing
Ansible Academy · Lekcja

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: restarted

Handler 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: restarted

Przeł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: reloaded

Uż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: true

Zachowuj 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

  1. Powiadamianie handlera o zmianie
  2. Definiowanie handlerów i wzorce restartu
  3. Kiedy uruchamiają się handlery i flush_handlers
  4. Listen: jeden wyzwalacz, wiele handlerów
← Powrót do Ansible Academy