Jak używać Playbooków Ansible do automatyzacji złożonych zadań na wielu zdalnych serwerach - Część 2

Jak używać Playbooków Ansible do automatyzacji złożonych zadań na wielu zdalnych serwerach - Część 2

W poprzednim artykule tej serii Ansible wyjaśniliśmy, że Ansible to narzędzie bez agenta, które pozwala szybko i wydajnie zarządzać wieloma maszynami (znanymi również jako węzły - i wykonywać wdrożenia) z jednego systemu z jednego systemu.

Użyj Playbooków Ansible, aby zautomatyzować złożone zadania w systemie Linux - część 2

Po zainstalowaniu oprogramowania w komputerze kontrolera, utworzeniu kluczy do logowania bez hasła i kopiowania ich do węzłów, nadszedł czas, aby nauczyć się optymalizować proces zarządzania takimi zdalnymi systemami za pomocą Ansible.

Środowisko testowe ansible

W tym artykule, a także następnym, użyjemy następującego środowiska testowego. Wszyscy gospodarze są Centos 7 pudła:

Maszyna kontrolera (gdzie instalowana jest ansible): 192.168.0.19 Node1: 192.168.0.29 Node2: 192.168.0.30 

Ponadto należy pamiętać, że oba węzły zostały dodane w sekcji WebServers w lokalnym /etc/ansible/hosts plik:

Plik hosta ansible

To powiedziawszy, zacznijmy od danego tematu.

Przedstawiamy Ansible Playbooks

Jak opisano w poprzednim przewodniku, możesz użyć Ansible narzędzie do uruchamiania poleceń w zdalnych węzłach w następujący sposób:

# ansible -a "/bin/hostnamectl --static" Webservers 
Ansible: Uruchom polecenia w zdalnym Linuxie

W powyższym przykładzie prowadziliśmy hostnamectl --static NA Node1 I Node2. Nie trwa długo, aby uświadomić sobie, że ta metoda wykonywania zadań na komputerach zdalnych działa dobrze w przypadku krótkich poleceń, ale może szybko stać się uciążliwe lub niechlujne w przypadku bardziej złożonych zadań, które wymagają dalszych dobrze zorganizowanych parametrów konfiguracyjnych lub interakcji z innymi usługami

Na przykład konfigurowanie i konfigurowanie WordPress O wielu hostach - które omówimy w następnym artykule z tej serii). Tam jest Podręczniki Wejdź na scenę.

Po prostu premier, Podręczniki to zwykłe pliki tekstowe zapisane w Yaml Format i zawieraj listę z elementami z jedną lub więcej parami/wartościami (znanymi również jako „haszysz”Lub„słownik”).

W każdym podręczniku znajdziesz jedną lub więcej grupy hostów (każda z tych grup nazywa się również grać) tam, gdzie mają się wykonywać pożądane zadania.

Przykład z oficjalnych dokumentów pomoże nam zilustrować:

1. zastępy niebieskie: To jest lista maszyn (zgodnie z /etc/ansible/hosts) tam, gdzie zostaną wykonane następujące zadania.

2. remote_user: Konto zdalne, które zostanie użyte do wykonywania zadań.

3. vars: zmienne używane do modyfikacji zachowania systemu zdalnego (-ów).

4. Zadania są wykonywane w porządku, jeden na raz, w stosunku do wszystkich maszyn, które pasują do hostów. W grze wszyscy gospodarze otrzymają te same dyrektywy zadań.

Jeśli chcesz wykonać inny zestaw powiązanych zadań dla określonego hosta, utwórz inną grę w bieżącym Podręcznik (Innymi słowy, celem sztuki jest mapowanie określonego wyboru hostów na dobrze zdefiniowane zadania).

W takim przypadku rozpocznij nową grę, dodając dyrektywę hostów na dole i zaczynając od nowa:

--- - Hosty: WebServers remote_user: root vars: zmienna 1: wartość1 zmienna 2: value2 remote_user: Zadania root: - Nazwa: opis dla zadania Nazwa: Opis dla obsługi 1 usługa: name = name_of_service State = service_status - Hosts: Dbservers remote_user: root vars: zmienna 1: wartość1 zmienna 2: wartość2… 

5. Handlery to działania, które są wyzwalane na końcu sekcji zadań w każdej grze i są najczęściej używane do ponownego uruchomienia usług lub uruchamiania ponownego uruchomienia w zdalnych systemach.

# mkdir/etc/ansible/podręczniki 

I plik o nazwie Apache.yml W środku z następującymi treściami:

--- - Hosty: WebServers Vars: http_port: 80 Max_Clients: 200 Remote_user: Zadania root: - Nazwa: Upewnij się, że Apache jest w najnowszej wersji Yum: pkg = httpd State = najnowszy - Nazwa: Wymień indeks domyślny.Kopia pliku HTML: src =/static_files/index.html dest =/var/www/html/tryb = 0644 Powiadom: - Ponowne uruchom Apache - Nazwa: Upewnij się, że Apache jest uruchomiony (i włącz go w rozruchu) Service: name = httpd stan = uruchomion serwis: name = httpd stan = ponownie uruchomiono 

Po drugie, utwórz katalog /Files STATIC:

# mkdir /static_files 

gdzie będziesz przechowywać zwyczaj indeks.html plik:

       

Apache został uruchomiony w tym hoście przez Ansible


Przyniósł ci Tecmint.com

To powiedziawszy, teraz nadszedł czas, aby użyć tego podręcznika do wykonywania wspomnianych wcześniejszych zadań. Zauważysz, że Ansible przejdzie przez każde zadanie przez hosta, pojedynczo, i zgłosi status takich zadań:

# ansible-playbook/etc/ansible/podręczniki/apache.yml 
Ansible: automatyzuj zadania w Linux

Teraz zobaczmy, co się stanie, kiedy otworzymy przeglądarkę i wskazamy 192.168.0.29 I 192.168.0.30:

Ansible: potwierdź zautomatyzowane zadania

Idźmy o krok dalej i ręcznie zatrzymaj się i wyłącz Apache Node1 I Node2:

# SystemCtl Stop Httpd # Systemctl Wyłącz httpd # Systemctl IS-Active Httpd # Systemctl IS-obserwowany httpd 
Zatrzymaj i wyłącz usługę Apache

Następnie biegnij ponownie,

# ansible-playbook/etc/ansible/podręczniki/apache.yml 

Tym razem zadanie informuje, że serwer WWW Apache został uruchomiony i włączony na każdym hoście:

Ansible: Rozpocznij serwer WWW

Proszę rozważyć powyższy przykład jako spojrzenie na moc Ansible. Chociaż są to stosunkowo łatwe zadania po wykonywaniu niewielkiej liczby serwerów, może stać się bardzo żmudne i czasochłonne, jeśli potrzebujesz zrobić to samo w kilku (być może setkach) maszyn.

Streszczenie

W tym artykule opisaliśmy, jak uruchamiać polecenia i wykonywać złożone zadania na kilku zdalnych hostach jednocześnie za pomocą Ansible. Oficjalna dokumentacja i repozytorium GitHub dostarczają wielu przykładów i przewodników, jak używać Ansible, aby osiągnąć prawie wszelkie możliwe zadanie.

Kiedy zaczynasz uczyć się, jak automatyzować zadania na zdalnych hostach Linux za pomocą ansible, chcielibyśmy usłyszeć twoje myśli. Pytania, komentarze i sugestie są również zawsze mile widziane, więc skontaktuj się z nami, korzystając z poniższego formularza w dowolnym momencie.