Ansible Academy · Lekcja

Listen: jeden wyzwalacz, wiele handlerów

Rozsyłanie pojedynczego powiadomienia.

Lekcja 4 z 413 kroki

Listen: jeden wyzwalacz, wiele handlerów to bezpłatna lekcja Ansible Academy na CoddyKit. To lekcja 4 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.

Jedno zdarzenie, wiele reakcji

Czasami jedna zmiana powinna uruchomić kilka handlerów jednocześnie. Słowo kluczowe listen pozwala wielu handlerom zasubskrybować jeden temat.

Powiadamianie tematu zamiast nazwy

W przypadku listen wartość notify wskazuje nazwę logicznego zdarzenia zamiast tytułu jednego konkretnego handlera.

- name: Update certs
  ansible.builtin.copy:
    src: site.pem
    dest: /etc/ssl/site.pem
  notify: restart web stack

Handlery subskrybują temat za pomocą listen

Każdy handler dodaje wiersz listen z nazwą tego samego tematu. Wszystkie handlery nasłuchujące tego tematu uruchamiają się po otrzymaniu powiadomienia.

handlers:
  - name: Restart nginx
    ansible.builtin.service:
      name: nginx
      state: restarted
    listen: restart web stack

Wiele handlerów, jeden temat

Przypisz kilku handlerom tę samą wartość listen, a pojedyncze notify przekaże powiadomienie do wszystkich. To świetne rozwiązanie przy grupowych restartach.

  - name: Restart php-fpm
    ansible.builtin.service:
      name: php-fpm
      state: restarted
    listen: restart web stack

Oddziel zadania od handlerów

Największą korzyścią jest rozsprzęganie: zadania odwołują się do tematu, a handlery można dodawać lub usuwać bez modyfikowania zadań wysyłających powiadomienia.

name nadal opcjonalne, ale przydatne

Handler korzystający z listen nadal może mieć pole name, dzięki czemu dane wyjściowe pozostają czytelne, a inne zadania mogą również powiadamiać go bezpośrednio.

Handler może nasłuchiwać wielu tematów

Przekaż do listen listę, a jeden handler będzie reagował na kilka różnych tematów. Zareaguje na każde powiadomione zdarzenie.

    listen:
      - restart web stack
      - reload tls

Nadal idempotentne

Powiadomienia oparte na tematach podlegają tym samym zasadom: handlery uruchamiają się tylko po changed, a każdy z nich nadal wykonuje się najwyżej raz w każdym playu.

Nadal obowiązuje kolejność definicji

Gdy temat uruchamia kilka handlerów, wykonują się one w kolejności, w której zostały zdefiniowane na liście handlerów, tak jak zwykłe handlery.

Częste zastosowanie we współdzielonych rolach

Role wielokrotnego użytku wykorzystują listen, aby użytkownicy powiadamiali stały temat, podczas gdy rola może swobodnie zmieniać wewnętrzny zestaw handlerów.

notify a listen

notify to sygnał z zadania, a listen to subskrypcja handlera. Razem zmieniają jedno zdarzenie w wiele działań. 🔔

Szybki test

Chcą Państwo użyć jednego notify, aby jednocześnie ponownie uruchomić trzy usługi. Co pozwala wielu handlerom reagować na jeden temat?

Podsumowanie

Za pomocą listen zadanie powiadamia temat, a każdy zasubskrybowany handler zostaje uruchomiony. Dzięki temu zadania są niezależne od handlerów, a rozwiązanie łatwo skaluje się. 🎯

Bezpłatny start

Ucz się YAML dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Listen: jeden wyzwalacz, wiele handlerów” jest bezpłatna?

Tak — pełny tekst „Listen: jeden wyzwalacz, wiele handlerów” 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 „Listen: jeden wyzwalacz, wiele handlerów”?

Rozsyłanie pojedynczego powiadomienia. Ć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 4 z 4.

Ile czasu zajmuje lekcja „Listen: jeden wyzwalacz, wiele handlerów”?

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