StorageReview.com

Co to jest Ansible?

Enterprise   ◇  Oprogramowanie

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

@justinsane454

Skontaktuj się z StorageReview

Biuletyn | YouTube | Podcast iTunes / Spotify | Instagram | Twitter | TikTok | Kanał RSS

Autor-gość