Strona Główna / Blog

Ansible – Wystartuj z Infrastructure as Code w 30 Sekund. To Dziecinnie Proste!

Jakub Muszyński

Jakub Muszyński

Konsultant "Do Zadań Specjalnych". Praktykujący DevOps @ so1.net. Ekpsert AWS i Ansible. Posiada doświadczenie “multi-platform”: IoT, Rpi, Arduino. Aktywny w społecznościach: PCUG, SysOps/DevOps.

Słyszałeś o Ansible, ale nie wiesz, jak zacząć? To banalnie proste. Zapomnij o opasłych książkach, wielogodzinnych tutorialach i latach praktyki.

Wszystko, czego potrzebujesz, aby wystartować z Ansible, to kilka minut poświęconych na przeczytanie naszego artykułu. Gotowy?

Ansible Krok Po kroku. Co To Jest i Jak Zacząć?

Ansible jest niezwykle elastycznym i zarazem prostym do opanowania narzędziem do automatyzacji zadań i procesów, które pozwoli Ci efektywnie zarządzać infrastrukturą fizyczną (np. serwerami, komputerami, urządzeniami sieciowymi, routerami), czy chmurą (AWS, Azure, i innymi).

Bezsprzeczną zaletą narzędzia jest jego bardzo (bardzo, bardzo, bardzo!) wysoka przystępność. Pracę z Ansible naprawdę da się zacząć w 30 sekund, zupełnie nie znając podstaw! Opanowanie wszystkich możliwości, jakie oferuje, wymaga 1-2 dni praktyki, ale już od pierwszej minuty poczujesz potęgę tego rozwiązania!

No dobrze, pora przejść od słów do czynów.

Przykład Konfiguracji Ansible w 30 Sekund. Prawdziwa Historia

Na forum naszej społeczności SysOps/Devops pojawiło się kiedyś następujące pytanie:

„Jak mógłbym przyjemnie zaktualizować oprogramowanie na kilku raspberry pi, które posiadam? Obecnie muszę się logować po ssh. Myślałem o jakimś skrypcie w bashu, który w pętli przejdzie po urządzeniach, słyszałem też o Ansible – ale jak to zrobić?”

 A oto co napisałem w odpowiedzi:

Tyle! Stworzenie tej porady zajęło mi 30 sekund!!!

Oczywiście, powyższa komenda odnosi się do konkretnego przypadku i nie jest zoptymalizowana. Jednak moim celem było pokazanie możliwości wykonania skryptu w jednej linii i zaprezentowanie, z jaką łatwością możecie zastąpić komendy ssh modułem Ansible shell.

Parę sekund później uzupełniłem komentarz o 25-minutowe wideo (w języku ang.) Ansible 101 – on a Cluster of Raspberry Pi 2s przygotowane przez Jeffa Gerlinga, jednego z najbardziej aktywnych propagatorów Ansible w społeczności międzynarodowej. Dodałem go jako jeden z wielu przykładów na to, jak łatwo zacząć swoją przygodę z narzędziem.

Ansible oferuje Wam prostotę, wydajność i wygodę. Doprawdy żal z niego nie skorzystać.

Umiesz Liczyć? Licz Na Społeczność

Jeśli szukasz informacji na temat Ansible, nie jesteś zdany na siebie. Jest to jeden z najbardziej dynamicznych projektów na Github, z zaangażowaną i aktywną społecznością. Dzieje się tak pewnie dlatego, że to narzędzie proste w obsłudze, wszechstronne i przydatne. Warto w nie inwestować również dlatego, że ciągle się rozwija. Jeśli brakuje w nim jakiejś funkcjonalności, możesz być pewien, że niedługo się pojawi.

Github-statystyki-luty-marzec-2018
Statystyki Ansible: luty – marzec 2018

Jak Skorzystać z Pomocy Społeczności Ansible?

Ale w czym właściwie może Ci pomóc społeczność Ansible?

1.   Pomoc przy rozwiązywaniu problemów

Po pierwsze, społeczność okazuje się nieoceniona zwłaszcza, kiedy stawiasz pierwsze kroki z Ansible. Ile razy ślęczałeś nad skryptami dniami i nocami, nie wiedząc, jak zautomatyzować jakiś proces? Używając Ansible, nie jesteś sam!

Jeśli masz jakiekolwiek pytanie, nie możesz poradzić sobie z jakimś problemem, to zarówno na forum globalnym jak i na naszym lokalnym „podwórku” uzyskasz pomoc zazwyczaj w ciągu 5-30 minut od zadania pytania (no dobra, w nocy czasem trzeba uzbroić się w większą cierpliwość :) ).

To naprawdę jest potęga, której nie sposób przecenić!

2.   Gotowe rozwiązania na wyciągnięcie ręki

To jeszcze nie wszystko. Powiedzmy, że chcesz zainstalować i skonfigurować jakiś program (nawet taki, którego nie znasz). Niespodzianka! Prawdopodobnie znajdziesz gotowy skrypt w Internecie! Nie musisz odkrywać koła na nowo, z Ansible oszczędzisz swój czas.

No dobrze, Ale Jak Najlepiej Zacząć Przygodę z Ansible?

Już odpowiadam.

Po pierwsze, czytaj dalej. Krok po kroku przeprowadzę Cię przez instalację Ansible i pierwsze komendy.

Po drugie, na samym końcu artykułu znajdziesz sporo superprzydatnych linków do wideo z meetupów SysOps/DevOps, które bardzo polecam.

Tyle Teorii, Pora na Ansible w Praktyce!

Ansible możemy zainstalować na wiele sposobów:

  • Za pomocą managera paczek naszego systemu, np. Debian/Ubuntu:
  • Za pomocą managera paczek języka Python:
  • Pobierając Ansible bezpośrednio z Github.com – klonując repozytorium lub pobierając plik archiwum (np. zip).

UWAGA: Ja polecam instalację niezależną od naszego systemu w środowisku wirtualnym Pythona – virtualenv [Artykuł o virtualenv dla ciekawych]:

Powyższy proces można sobie uprościć, używając przygotowanego przeze mnie na potrzeby szkoleń (i używanego w podobnej formie produkcyjnie w mojej firmie) środowiska dostępnego na github.com.

  • Najpierw instalujemy wymagane pakiety, których używam w swojej pracy (zazwyczaj opcjonalne):

  • Następnie klonujemy moje repozytorium:

  • I już możemy wykonywać akcje. Oto najprostsza z nich:

Co tu się właściwie stało?

Kilka słów wyjaśnienia odnośnie tego, co właśnie zrobiliśmy.

Kluczowe operacje wykonywane są na dwóch etapach, podczas instalacji pakietów dodatkowych oraz przy instalacji pliku environment.sh. To w nim tworzony jest katalog ze środowiskiem wirtualnym Pythona o nazwie venv, następnie ładowany jest on do kontekstu naszej konsoli source venv/bin/activate, po czym instalowany jest Ansible z zależnościami pip install -r requirements.txt.

Komentarz do virtualeny

Przy ponownym otwarciu terminala musimy załadować ponownie kontekst naszego środowiska wirtualnego scieżka_do_katalogu/venv/bin/activate. Tę linię można również dodać do naszego pliku terminala, np. ~/.bashrc .

 Przykładowy wynik powyższej komendy powinien wyglądać tak:

Prawda, że to proste?

Gratulacje! Instalacja Ansible Zakończona Sukcesem!

Zainstalowałeś Ansible i sprawdziłeś komunikację ze wszystkimi serwerami w swojej infrastrukturze (domyślnie jest to localhost). Jeśli używałeś virtualenv, to dodatkowo masz jeszcze niezależną od systemu instalację Ansible, co samo w sobie ma wiele plusów. Ale o tym kiedy indziej😉

Jasne, instalacja i konfiguracja Ansible to rzeczywiście pestka. Ale jak robić ciekawsze rzeczy, skomplikowane, wieloetapowe skrypty, automatyzację??

Wszystko po kolei.

Ansible – Zaawansowane Przykłady

Aby móc zmierzyć się z bardziej zaawansowanymi przykładami wykorzystania Ansible, musisz poznać kilka podstawowych pojęć:

  • Moduł – komenda (podprogram), którą wykonujemy. W przykładzie powyżej użyliśmy modułu ping.
  • Task – tak nazywamy użycie modułu w „skrypcie Ansible” zwanym playbook.
  • Playbook – to plan wykonania, czyli nasz skrypt zawierający definicję hostów, zmienne i zbiór zadań (tasków), które będziemy uruchamiać.

Zobaczmy, jak może wyglądać przykładowy playbook, który ’przejdzie’ po naszych serwerach i wykona jakąś prosta akcję. Użyjemy banalnego przykładu sprawdzenia daty i miejsca na dysku i wypisania ich w naszym terminalu.

Językiem formatowania playbooków jest YAML [wikipedia Yaml]. Wymusza on odpowiednie wcięcia tekstu.

Przykład Ansible – Wyjaśnienie

Na wszystkich maszynach zdefiniowanych w naszym Inventory wykonujemy moduł ping (który zwraca pong jeśli komunikacja przebiega prawidłowo), a następnie sprawdzamy datę na maszynie – date, kim jesteśmy – whoami i zajęcie dysku za pomocą modułu shell.

Nic skomplikowanego – ale to dopiero początek…

Przy okazji padło tu kolejne pojęcie:

  • Inventory – to zbiór naszych obiektów (maszyn, urządzeń, komputerów) + przydatne zmienne.

No dobrze, a jak to uruchomić?

Ano tak:

Tutaj mała ciekawostka: powyższe moduły uruchamiane ręcznie z konsoli wyglądałyby tak:

Czy warto więc pisać playbooki? Oczywiście. Wyobraź sobie skomplikowaną instalację oprogramowania składającą się z wielu etapów, z dodatkową logiką. Z poziomu konsoli jest to zadanie nie do odtworzenia. Dzięki playbookom możemy je wykonać dowolną liczbę razy.

Co dalej?

To dopiero początek drogi. Playbook jako zbiór zadań nabiera mocy dzięki temu, że można go uruchamiać wielokrotnie. Wspomniałem wyżej, że zadania w playbooku mogą mieć „logikę”.

Wyobraźmy sobie, że instalujemy serwery Apache i chcemy skonfigurować parametry (np. poziom logowania czy ilość przydzielonej pamięci) zależnie od tego, co zastaniemy na docelowym serwerze. Musimy wtedy jakoś sprawdzić ich wartość (przed wykonaniem playbooka lub dynamicznie w trakcie wykonania), a ten parametr – zmienną – umieścić w docelowej konfiguracji.

Zaznaczam, że to przykładowy i nieco bardziej zaawansowany playbook. Nie przejmuj się, jeśli niektóre rzeczy wydadzą Ci się skomplikowane, moim głównym celem było pokazanie Ci możliwości narzędzia, choć przyznam już w tym miejscu, że dokonałem pewnych uproszczeń (na prawdziwym środowisku produkcyjnym zrobiłbym to inaczej). Na przykład, osobiście nie lubię modułu lineinfile i zamiast niego polecam template, ale to już materiał na kolejny artykuł.

Poniżej załączam playbook z  prostą instalacją Apache, lineinfile (do ustawienia poziomu logowania) + handler.

Uruchomenie playbooka:

Wynik takiego playbooka może wyglądać tak (dla przypadku gdy serwer był uprzednio skonfigurowany).

STOP! Pora na Ważny Komunikat: Webinar + Szkolenie

Liczba zastosowań Ansible oraz bogactwo jego funkcjonalności dostarczają materiału na niejeden artykuł. Można by poświęcić im wręcz całą serię wydawniczą. Nie wspomniałem na przykład w ogóle o szablonach i re-używalności, to jest o rolach. Przed nami także jeszcze inne bardzo ciekawe tematy takie jak czerpanie gotowych szablonów ze społeczności czy zarządzanie zmiennymi.

Biorąc pod uwagę powyższe, wspólnie z chłopakami z Chmurowiska postanowiliśmy przygotować PRAKTYCZNY WEBINAR, na który już teraz Cię zapraszamy. W jego trakcie pokażę Ci dużo więcej dobrych praktyk wdrażania automatyzacji w IT oraz traktowania infrastruktury i chmury jako kod. A jeżeli zechcesz zostać mistrzem Ansible i rozwijać skrzydła z moją pomocą, z przyjemnością przywitam Cię na moim 2-dniowym szkoleniu „Ansible w Chmurze – Droga Eksperta!”.

P.S. Ansible – linki, linki, linki

A oto i obiecane link do prelekcji z meetupów SysOps/DevOps:

Zachęcam do obejrzenia i do zobaczenia na webinarze, ZAREJESTRUJ SIĘ na niego jak najszybciej!

 

Dołącz do listy mailingowej!

Dołącz do naszego newslettera

Staramy się wysyłać tylko wartościowe informacje, np. co miesiąc dostaniesz spis najważniejszych nowości z chmur Azure, AWS i GCP, z krótkimi opisami i linkami.