Ansible Local_Action

Ansible Local_Action
W większości sytuacji używamy ansible do zarządzania i konfigurowania zdalnych hostów z jednego węzła sterującego. Dlatego przy tworzeniu podręczników jest to, że będą one wykonywać na zdalnych maszynach, które określamy w bloku hosta podręczników.

Istnieją jednak przypadki, w których może być konieczne wykonanie konkretnej akcji na komputerze lokalnym zamiast zdalnych hostów. W takich przypadkach jak funkcja taka jak Local_Action Przydaje się.

Ten przewodnik pokaże, jak pracować z modułem Ansible Local_Action w celu wykonania zadań lokalnych.

Jak działa moduł ansible local_action

Jak wspomniano wcześniej, podczas tworzenia podręczników celem są zazwyczaj zdalne hosty. Jeśli chcesz wykonać zadanie dla hostów innych niż zdalne hosty, możesz użyć modułów ansible, takich jak local_action i delegate_to.

DeleGate_to jest przydatny, gdy trzeba ustawić zadanie do wykonania na określonym hoście. Wskaż moduł delegate_to na hosty docelowe, określając jego nazwę hosta lub adres IP.

Local_Action, z drugiej strony, wykona ustalone zadania tylko na komputerze lokalnym. Jest podobny do ustawiania wartości delegate_to na localhost lub 127.0.0.1

deleGate_to: LocalHost

Moduł Local_Action jest wygodny, gdy po raz pierwszy trzeba wykonać zadanie na komputerze lokalnym przed wysłaniem go do systemów zdalnych. Są to głównie niestandardowe lub powłoki w systemie lokalnym.

Najlepszym sposobem zrozumienia, jak korzystać z modułu Local_Action, jest użycie przykładowych podręczników.

Ansible local_action Przykład przypadków użycia

Dla uproszczenia postaramy się mieć krótkie i niezbyt skomplikowane podręczniki.

Przed skupieniem się na podręcznikach opiszmy naszą konfigurację Ansible, która pozwoli nam zrozumieć, jak działa moduł Local_Action.

W naszej przykładowej konfiguracji mamy Ubuntu 20.04 Serwer, który ma zainstalowany ansible. Będzie to służyć jako węzeł kontrolny ansible.

Następnie mamy trzy zdalne maszyny: Ubuntu 21.04 Serwer, serwer Debian 11 i serwer CentOS 8.

Mamy plik zapasowy Ansible zawierający wszystkie adresy IP trzech hostów w węźle sterowania.

Po uruchomieniu podręcznika wykonuje się on na wszystkich trzech hostach.

NOTATKA: Ograniczymy wyjście do jednego hosta, aby uniknąć złożoności i zamieszania.

Local_action za pomocą modułu

Rozważ następujący podręcznik:

---
- Gospodarze: Wszyscy
GACED_FAFTS: Nie
staje się prawdą
Zadania:
- Nazwa: ArchiveTelocallogfiles
Local_Action:
Moduł: społeczność.ogólny.archiwum
ścieżka: /var /log
dest:/var/log/log.smoła.GZ
Format: GZ
Force_archive: True
- Nazwa: CopylogarchivetORemoteHost
Ansible.wbudowany.Kopiuj:
src:/var/log/log.smoła.GZ
dest: /home /ubuntu

W pierwszym bloku określamy hosty docelowe do uruchamiania zadań, chyba że określono inaczej.

Poradnik nadal wyłącza gromadzenie faktów na temat zdalnych hostów, ustawiając blok Gather_Facts na nie.

Aby mieć zgodę na odczyt i zapis, ustawiamy blok na true.

W kolejnych blokach definiujemy dwa zadania:

Pierwsze zadanie tworzy archiwum plików dziennika z systemu lokalnego. Delegujemy zadanie uruchomienia w systemie lokalnym za pomocą bloku Local_ActiOb. W naszym przykładzie używamy modułu społeczności, który możemy zainstalować za pomocą polecenia:

kolekcja Ansible-Galaxy instaluj społeczność.ogólny

Następne zadanie kopiuje archiwum dziennika z systemu lokalnego do określonej ścieżki na zdalnym hoście.

Zapisz podręcznik i uruchom go za pomocą polecenia:

ansible-playbook local_action.yml

Po pomyślnym zakończeniu należy zobaczyć dane wyjściowe podobne do tego pokazanego poniżej:

Local_action za pomocą polecenia powłoki

Poniższy przykład pokazuje, jak uruchomić polecenia powłoki za pomocą modułu Local_Action.

---
- Gospodarze: Wszyscy
GACED_FAFTS: Nie
staje się prawdą
Zadania:
- Nazwa: CountfileSandDirectorieson the Remotehost
Shell: LS-La ~ | WC -L
Zarejestruj się: Piles_ remote_files
- Nazwa: Printremotefiles
odpluskwić:
msg: 'remote_files.stdout '
- Nazwa: CountfileSandDirectieson the LocalMachine
Local_Action: Shellls-La ~ | WC -L
Zarejestruj się: Local_files
- Nazwa: PRINTLOCALFILES
odpluskwić:
msg: 'local_files.stdout '

W powyższym przykładzie podręcznika używamy modułu Local_Action, aby uruchomić polecenie powłoki. Polecenie powłoki liczy liczbę plików i katalogów zapisanych na zmiennej.

Następnie używamy modułu debugowania do wydrukowania liczby plików zarówno na pilocie, jak i lokalizacji.

Uruchom plik jako:

Ansible-Playbook FiLecount.yml

Local_Action z run_once

Możesz użyć modułu Local_Action wraz z parametrem run_once.

---
- Gospodarze: Wszyscy
GACED_FAFTS: Nie
staje się prawdą
Zadania:
- Nazwa: StopTheapacheserver
Local_Action:
Moduł: Ansible.wbudowany.praca
Nazwa: httpd
Stan: Zatrzymany
run_once: true

Poradnik powyżej uruchomi blok Local_Action raz w systemie lokalnym.

Wniosek

Moduł Local_Action jest przydatny, gdy chcesz przekazać zadanie do uruchomienia na komputerze lokalnym. Możesz go użyć zarówno z modułem ansible lub poleceniem powłoki.