Ansible Academy · Lekcja

delegate_to i run_once do orkiestracji

Uruchamianie zadania na jednym hoście dla wielu hostów.

Lekcja 2 z 413 kroki

delegate_to i run_once do orkiestracji 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.

Zadania nie zawsze wykonują się tam, gdzie się Państwo spodziewają

Domyślnie każde zadanie wykonuje się na hoście docelowym. W przypadku orkiestracji czasami trzeba jednak uruchomić zadanie w zupełnie innym miejscu. 🎯

Poznaj delegate_to

Słowo kluczowe delegate_to uruchamia zadanie na innym hoście niż bieżący, nadal korzystając ze zmiennych tego hosta.

- name: Add web node to load balancer
  community.general.haproxy:
    host: "{{ inventory_hostname }}"
    state: enabled
  delegate_to: lb01

Klasyczny przypadek użycia

Podczas iterowania po węzłach web należy delegować zmianę na load balancerze do hosta LB. Play nadal działa dla poszczególnych węzłów, ale operacja jest wykonywana na LB.

Delegowanie do localhost

Należy uruchomić zadanie na węźle sterującym, delegując je do localhost. To świetne rozwiązanie do wywoływania API lub wysyłania powiadomień z jednego miejsca.

- name: Notify chat
  ansible.builtin.uri:
    url: "{{ webhook }}"
    method: POST
  delegate_to: localhost

Zmienne pozostają przy pierwotnym hoście

Delegowanie zmienia miejsce wykonania zadania, ale nie określa, z którego hosta pobierane są fakty. inventory_hostname nadal wskazuje pierwotny cel, a nie hosta delegowanego.

Poznaj run_once

Słowo kluczowe run_once uruchamia zadanie tylko raz dla całej partii, a nie raz na każdy host. Ansible wybiera pierwszy host, na którym je wykona.

- name: Run database migration
  ansible.builtin.command: ./migrate.sh
  run_once: true

Dlaczego run_once ma znaczenie

Niektóre operacje muszą zostać wykonane tylko raz, na przykład migracja lub wybór lidera. run_once zapobiega powtarzaniu tego samego współdzielonego kroku na każdym hoście.

Połącz oba słowa kluczowe

Połącz run_once z delegate_to, aby wykonać jedną operację na jednym wybranym hoście, na przykład uruchomić migrację z pojedynczego węzła aplikacji.

- name: Migrate db once
  ansible.builtin.command: ./migrate.sh
  run_once: true
  delegate_to: app01

Wyniki są współdzielone

W przypadku run_once wynik zarejestrowany za pomocą register jest współdzielony przez wszystkie hosty w partii. Wszystkie widzą dane wyjściowe z tego pojedynczego wykonania.

- ansible.builtin.command: cat /etc/version
  run_once: true
  register: ver

Zbieranie faktów z hosta delegowanego

Należy użyć delegate_facts, jeśli zebrane fakty mają zostać przypisane do hosta delegowanego zamiast do bieżącego. Domyślnie ta opcja jest wyłączona.

Orkiestracja, nie tylko konfiguracja

Wspólnie te słowa kluczowe przekształcają konfigurację per host w prawdziwą orkiestrację: koordynują jedno działanie w całej flocie z jednego miejsca.

Szybkie sprawdzenie

Sprawdźmy te słowa kluczowe związane z orkiestracją.

Podsumowanie

Używaj delegate_to, aby uruchamiać zadanie na innym hoście, a run_once, aby wykonywać je tylko raz na partię — to podstawa orkiestracji. ✅

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 „delegate_to i run_once do orkiestracji” jest bezpłatna?

Tak — pełny tekst „delegate_to i run_once do orkiestracji” 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 „delegate_to i run_once do orkiestracji”?

Uruchamianie zadania na jednym hoście dla wielu hostów. Ć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 „delegate_to i run_once do orkiestracji”?

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. Automatyzacja urządzeń sieciowych za pomocą cli_command
  2. delegate_to i run_once do orkiestracji
  3. Koordynowanie warstw Web, App i DB
  4. Wyłączanie i ponowne włączanie węzłów w load balancerze
← Powrót do Ansible Academy