Ansible to narzędzie do automatyzacji bez agentów napisane w Pythonie. Łączy się z klientami przez SSH i pozwala zautomatyzować nudne, powtarzalne zadania, których nie chcesz wykonywać. Pozwala przekonwertować zadanie wykonywane przez człowieka, którego wykonanie może zająć godzinę, na pojedyncze polecenie, które można wykonać w ciągu kilku minut. To poprawia wydajność i pozwala rozpocząć pracę nad kolejnym dużym projektem.
Korzyści z Ansible
Ansible oferuje wiele korzyści, poświęćmy chwilę na omówienie najważniejszych. Podzielę to na dwie sekcje: jedną dla tych, którzy nie mają żadnej automatyzacji lub korzystają z niej w minimalnym stopniu, i drugą dla tych, którzy już korzystają z narzędzi do automatyzacji, takich jak Salt czy Puppet.
Nowość w automatyzacji
Jeśli dopiero zaczynasz przygodę z automatyzacją, proste narzędzie może ułatwić Ci naukę. Przyjrzyjmy się kilku powodom, dla których warto wybrać Ansible zamiast innych dostępnych narzędzi.
1. Prosta składnia
Dzięki prostemu sposobowi definiowania zadań w Ansible, rozpoczęcie pracy jest bardzo proste. Weźmy na przykład poniższy fragment kodu:
Do
– gospodarze: wszyscy
zadania:
– nazwa: Zainstaluj Nginx
pycha:
nazwa: nginx
stan: najnowszy
Kompletne zadanie Ansible, równoważne uruchomieniu `yum install nginx` na wszystkich hostach.
Prawdopodobnie już wiesz, co robi. Instaluje najnowszą wersję serwera WWW typu open source Nginx na wszystkich zdefiniowanych hostach. Definiowaniem hostów zajmiemy się później. Ponieważ wszystkie tworzone zadania są w formacie YAML, są one łatwe do odczytania i utworzenia. Jest to kluczowe podczas nauki nowego narzędzia, ponieważ pozwala szybko zdobyć doświadczenie, budując jednocześnie pewność siebie i zrozumienie.
2. Miłość do Git
Ponieważ Twoje automatyzacje są prostymi plikami tekstowymi, możesz je przechowywać w Gicie (lub innym systemie repozytoriów kodów źródłowych), gdzie mają kontrolę nad zmianami i mogą być pobierane i aktualizowane z centralnego źródła.
3. Proste zlecenie wykonania
Ponieważ zadania są wykonywane w zdefiniowanej przez Ciebie kolejności, nie musisz się o nią martwić. Wystarczy zdefiniować kroki tak, jak robiłbyś to z człowiekiem, a Ansible wykona je za każdym razem dokładnie w tej kolejności, bez obawy o pominięcie któregokolwiek kroku.
4. Bez agentów
Posiadanie bezagentowego sposobu zarządzania hostami jest ważne, szczególnie jeśli nie masz jeszcze możliwości zautomatyzowanego wdrożenia agenta. Próba uruchomienia automatyzacji w istniejącym środowisku może być koszmarem, zwłaszcza jeśli istnieją dziesiątki lub setki maszyn, które potrzebują nowego agenta.
Miłośnik automatyki
Jeśli już zautomatyzowałeś jakieś procesy, na przykład za pomocą Bash, Pythona lub PowerShella, możesz się zastanawiać, co oferuje Ansible. Przyjrzyjmy się temu bliżej.
1. Prosta orkiestracja
Czy próbowałeś kiedyś zaktualizować stronę internetową za pomocą skryptu bash? Załóżmy, że masz moduł równoważenia obciążenia lub odwrotny serwer proxy, 5 serwerów WWW, moduł równoważenia obciążenia bazy danych i 2 serwery baz danych. Możesz poświęcić setki wierszy kodu na samo sprawdzenie, czy każdy komponent został pomyślnie zaktualizowany.
Dzięki Ansible możesz definiować kontrole stanu, aktualizacje kroczące i konfigurować moduły równoważenia obciążenia tak, aby usuwały dodawane i usuwane węzły na każdym etapie aktualizacji. Przykład można znaleźć w oficjalnej dokumentacji dotyczącej ciągłego dostarczania i aktualizacji kroczącyc.
2. Idempotencja
Idempotencja to właściwość pewnych operacji w matematyce i informatyce, dzięki której można je stosować wielokrotnie bez zmiany wyniku poza momentem pierwszego zastosowania. – Wikipedia Zasadniczo celem jest jednorazowe uruchomienie playbooka, aby ustawić wszystko zgodnie z oczekiwaniami, a następnie powtarzanie go co *X* godzin/dni/tygodni, aby upewnić się, że nic się nie zmieniło. Jeśli cokolwiek się zmieni, należy szukać źródła *dryfu konfiguracji* w swoim środowisku.
Konfiguracja Driftis polega na tym, że serwery w infrastrukturze stają się coraz bardziej różne w miarę upływu czasu. - Shadow Soft
3. Wbudowane przechowywanie sekretów
Wbudowany w Ansible magazyn sekretów, zwany Ansible Vault, pozwala na bezpieczne przechowywanie poufnych danych, takich jak hasła, klucze API, a nawet klucze prywatne, wraz z resztą kodu, w systemie kontroli wersji. Jest to niespotykane w Bash i Pythonie, zazwyczaj wymagające narzędzi firm trzecich, takich jak sejf haseł z obsługą API.
4. Możliwość rozbudowy
Ansible można łatwo rozszerzyć o moduły Windows i Linux, a także o komunikację z narzędziami innych firm. Oznacza to, że jeśli chcesz coś zautomatyzować, prawdopodobnie istnieje już moduł społecznościowy, z którego możesz skorzystać, lub możesz utworzyć lub dostosować istniejący moduł do swoich potrzeb.
Informacje na temat tworzenia własnych modułów znajdziesz w oficjalnej dokumentacji, możesz też sprawdzić Ansible Galaxy, aby zapoznać się z modułami społecznościowymi.
Rozpoczęcie pracy z Ansible
Instalacja Ansible
Rozpoczęcie jest tak proste, jak instalacja Ansible na stacji roboczej lub serwerze. Pokażę polecenia RedHat/CentOS, ale pozostałe kroki instalacji można znaleźć w oficjalnej dokumentacji.
`sudo yum install ansible`
Gotowe! Masz w pełni funkcjonalny węzeł sterujący Ansible zainstalowany i gotowy do użycia.
Magazyn
Ansible musi wiedzieć, z którymi maszynami ma się komunikować i na których uruchamiać playbooki. Przyjrzyjmy się więc konfiguracji podstawowego inwentarza. Domyślny plik inwentarza znajduje się w katalogu `/etc/ansible/hosts` w systemie Linux. Jeśli przyjrzysz się temu plikowi, zobaczysz, że jest w formacie podobnym do INI i prawdopodobnie wygląda tak:
mail.example.com
[serwery WWW]
foo.example.com
bar.example.com
[serwery baz danych]
one.example.com
two.example.com
trzy.example.com
Jak wyjaśniono w dokumentacji, nagłówki w nawiasach to nazwy grup, które pozwalają klasyfikować systemy do dowolnych grup. Zalecam poświęcenie czasu na skonfigurowanie pliku inwentaryzacji, ponieważ Ansible musi wiedzieć, na których hostach mają być uruchamiane zadania.
Tworzenie podręcznika
Playbook to zbiór zadań, które mają zostać uruchomione na hostach. Możesz utworzyć playbook, który jest tak prosty, jak pojedynczy plik z jedną grą, lub wiele plików z wieloma warunkami i importami z innych playbooków. Zaczniemy od prostego playbooka, który instaluje, uruchamia i dodaje reguły zapory dla nginx na naszych serwerach WWW. W pliku hosts możemy mieć coś takiego:
[serwery WWW]
web01.przyklad.com
web02.przyklad.com
a w pliku `nginx-install.yaml` mamy następujące informacje:
Do
– hosty: serwery WWW
zadania:
– nazwa: Zainstaluj Nginx
pycha:
nazwa: nginx
stan: najnowszy
– nazwa: Uruchom Nginx
usługa:
nazwa: nginx
stan: rozpoczęty
– nazwa: Zezwól na port 80 przez zaporę firewalld
zapora sieciowa:
port: 80/tcp # Alternatywnie możesz użyć składni „service: http”
stały: tak
stan: włączony
Omówienie hosta Ansible łączącego się z serwerami WWW i instalującego NGINX. Aby uruchomić ten podręcznik, wystarczy uruchomić `ansible-playbook nginx-install.yaml`, a Ansible zainstaluje Nginx na wszystkich hostach w grupie serwerów WWW. To prosty podręcznik z jedną procedurą, jednak stanowi dobry przykład łatwości, z jaką Ansible można wykorzystać w swoim środowisku.
Wniosek
Jak widać, Ansible to bardzo elastyczne i łatwe w użyciu narzędzie do automatyzacji, które sprawdzi się w każdym środowisku. Dzięki łatwej nauce i możliwości rozbudowy dostosowującej się do potrzeb, Ansible jest jednym z najlepszych narzędzi do automatyzacji wdrażania infrastruktury w pełnym środowisku zarządzanym w modelu DevOps.
-Justin Gauthier




Amazon