delegate_to i run_once do orkiestracji
Uruchamianie zadania na jednym hoście dla wielu hostów.
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: lb01Klasyczny 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: localhostZmienne 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: trueDlaczego 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: app01Wyniki 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: verZbieranie 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. ✅
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
- Automatyzacja urządzeń sieciowych za pomocą cli_command
- delegate_to i run_once do orkiestracji
- Koordynowanie warstw Web, App i DB
- Wyłączanie i ponowne włączanie węzłów w load balancerze