Ansible to doskonały sposób na masowe wdrażanie zmian na wielu maszynach. Na przykład, użyłem go do przeprowadzenia podstawowej konfiguracji na nowej maszynie i jednoczesnej aktualizacji wielu hostów. Należy również pamiętać, że Ansible jest używany nie tylko w laboratoriach domowych, ale cieszy się również dużą popularnością w środowiskach korporacyjnych, co czyni go niezwykle cenną umiejętnością.
Konfigurowanie Ansible na nowej maszynie
Najpierw musimy zainstalować pakiet `ansible`, powinno to być tak proste jak:
` sudo apt update && sudo apt install ansible `
I musimy utworzyć katalog Ansible, w którym będziemy pracować:
` mkdir ~/ansible && cd ~/ansible `
Teraz powinieneś znajdować się w katalogu Ansible na swoim komputerze lokalnym.
Przegląd Ansible
Korzystamy z dwóch głównych funkcji Ansible: inwentaryzacji, które przechowują wszystkie hosty, oraz playbooków, które zawierają „instrukcje” do wykonania na hostach. Aby Ansible mógł odczytać nasz playbook i wykonać działania, musi wiedzieć, gdzie znajdują się hosty – właśnie to zapewnia plik inwentaryzacji. Jest to po prostu „inwentaryzacja” wszystkich hostów.
Teraz, gdy mamy już same podręczniki, Ansible, gdy odczyta inwentarz i rozpozna wszystkie hosty, zaczyna szukać działań. To właśnie podręcznik, czyli prosty plik YAML, wykorzystuje „moduły” do wykonywania zadań. Dokumentację tych modułów można znaleźć na stronie internetowej Ansible . Jeśli coś jest niejasne, ten [ film dla początkujących użytkowników Ansible ] autorstwa NetworkChuck dobrze wszystko wyjaśnia.
Tworzenie naszego inwentarza Ansible
Teraz, gdy mamy już podstawową wiedzę o Ansible i jego działaniu, możemy utworzyć nasz inwentarz. Plik może być w formacie YAML lub INI. Dla uproszczenia użyjemy INI i dodamy tylko jednego hosta.
Oto przykładowy plik:
inventory.ini:
„ini
[potężny]
192.168.1.78
„„
Nazwij go `inventory.ini` w katalogu `ansible`. Ten plik tworzy „grupę” `powerful` z jednym hostem `192.168.1.78`. Możemy go później wykorzystać w naszych podręcznikach. Możesz nadać jej dowolną nazwę grupy i adres IP, w zależności od konfiguracji. W razie potrzeby możesz również dodać więcej hostów do grupy.
Wdrażanie podręczników Ansible
Najpierw musimy sprawdzić, czy Ansible działa:
Pamiętaj, że nasz klucz publiczny SSH musi znajdować się w pliku authorized_keys na hoście, do którego próbujemy się połączyć. W przeciwnym razie polecenie się nie powiedzie. Używamy grupy „powerful”, ale użyj nazwy, którą sam/a nadałeś/aś.
` ansible -i ./inventory.ini -m ping -u administrator powerful `
Jeśli to zadziała, będziemy mogli przygotować nasze podręczniki na tym węźle.
Wdrażany przez nas playbook po prostu aktualizuje system, restartuje go, a następnie czeka na powrót do trybu online. Jeśli w grupie znajduje się wiele węzłów, system przejdzie przez każdy węzeł po kolei, czekając na powrót poprzedniego do trybu online przed ponownym uruchomieniem kolejnego. Daje to usługom na węźle wystarczająco dużo czasu na wyłączenie i migrację, jeśli używasz rozwiązania takiego jak Docker Swarm.
aktualizacja.yml:
„Yaml
– nazwa: Zaktualizuj wszystkie węzły i uruchom ponownie
zbierz_fakty: nie
gospodarze: „{{ variable_hosts }}”
stać się: tak
numer seryjny: 1
zadania:
– nazwa: Aktualizacja i ulepszenie | {{ inventory_hostname }}
trafny:
# wymuś wsteczną kompatybilność
force_apt_get: tak
update_cache: tak
aktualizacja: 'tak'
– nazwa: Uruchom ponownie | {{ inventory_hostname }}
restart:
# jak długo czeka się na powrót węzła do trybu online po ponownym uruchomieniu
restart_timeout: 300
# jak długo czekać na ponowne uruchomienie po zakończeniu poprzedniego zadania (apt)
opóźnienie_przed_ponownym_uruchomieniem: 60
– nazwa: Ping | {{ inventory_hostname }}
świst:
– nazwa: Pauza | {{ inventory_hostname }}
pauza:
minuty: 5
„„
`ansible-playbook -i ./inventory.ini -e variable_hosts=powerful -u administrator -K ./update.yml`

Wyjaśnienie flag:
– -i: Określ plik inwentarza.
– -e: Musimy określić hosta, w podręczniku mamy zmienną `variable_hosts`, która jest przekazywana do podręcznika.
– -u: Jest to użytkownik używany do uruchamiania poleceń na hoście.
– -K: Polecenie to informuje podręcznik, że ma wyświetlić użytkownikowi monit o podanie hasła sudo, w przeciwnym razie podręcznik nie zadziała.
Myśli końcowe
Ansible to niezwykle potężne i wszechstronne narzędzie, którego można używać do wielu celów. W tym artykule zaledwie dotknęliśmy tematu, ale warto kontynuować eksperymentowanie i automatyzować zadania, aby dowiedzieć się o nim więcej. Niezależnie od tego, czy chodzi o automatyzację wdrożeń Kubernetes, czy po prostu aktualizację systemów, tak jak zrobiliśmy to dzisiaj.
-Ethan Edwards




Amazon