Nasza strona używa cookies. Dowiedz się więcej o celu ich używania i zmianie ustawień w przeglądarce. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

Co to jest Ansible?

Jakub Gutkowski Principal Software Engineer / blog.gutek.pl
Zobacz, dlaczego Ansible zyskuje na popularności wśród linuxowców, ale także wśród ludzi tworzących rozwiązania pod Azure, OpenStack, AWS czy Google Cloud.
Co to jest Ansible?

Czytając i ucząc się na temat platformy OpenStack, co chwilę natrafiałem na coś, co nazywa się Ansible. Ba! Nawet na jednych warsztatach stawiałem na OpenStack wordpressa - w pełni wykorzystując właśnie Ansible. 

Warto więc poświęcić chwilę na opisanie tego narzędzia, zanim przejdziemy do konkretów.

Ansible to coś więcej niż odpalany playbook. Aby wytłumaczyć, jak dokładnie działa, pokażę na przykładzie - czym jest a czym nie. Nie wybiegajmy jednak za bardzo w przyszłość.

Pytanie, czy ktoś z was czytał/oglądał Grę Endera? Jeśli nie, to najwyższy czas to nadrobić. Już teraz. Post poczeka. Praca też ;) Dlaczego o to spytałem? Ansible było użyte w tej książce do komunikacji Endera z flotą kosmiczną. Jak to jednak w świecie bywa, nie było to pierwsze użycie ansible. Wcześniej, Ansible zostało użyte przez Ursula K. Leguin w powieści Świat Rocannona i opisane jako fikcyjny komputer/technologia umożliwiająca natychmiastową (szybszą od światła) komunikację – wysyłanie i odbieranie wiadomości - nieważne z jak daleka.

Autor oprogramowania wziął sobie do serca klasyki Si-Fi i użył słowa Ansible, do określenia aplikacji/narzędzia, które umożliwia natychmiastową komunikację z serwerami oraz przekazywanie/odbieranie od nich wiadomości. Brzmi trochę skomplikowanie – choć wcale takie nie jest. Ansible to narzędzie, które działa na zasadzie komunikacji kontroler <-> node. Przy czym, kontroler to miejsce odpalenia aplikacji, zaś node to komputer, do którego chcemy się podłączyć. Node nie musi posiadać, żadnego dodatkowego softu, wystarczy ssh. Komunikacja tutaj polega na wykonaniu pewnych kroków/zadań po stronie serwera. Ot tyle i aż tyle.

Oczywiście, samo odpalanie skryptów zdalnie, jakoś wcale nie zachęca do tego by z aplikacji skorzystać. Dlatego też ansible działa trochę inaczej niż odpalenie skrytpu PowerShell. To co przede wszystkim robi to:

  • Podłącza się do node
  • Wgrywa tam małe aplikacje moduły
- Moduły to zasoby wykorzystywane w opisie deklaratywnym stan systemu- Moduły są następnie wykonywane
  • Po wykonaniu moduły są kasowane

Słowo klucz tutaj to deklaratywny stan systemu. Czyli coś, co nam opisuje jaki jest pożądany końcowy stan – jeżeli coś odbiega od założeń, my mamy prawo odpowiednio zareagować, jak? Zależy od nas.


Z czego składa się więc ansible?

Można wyróżnić kilka elementów ansible.

Moduły

To małe aplikacje napisane w dowolnym języku skryptowym, które wykonują jakąś konkretną pojedynczą czynność. Najlepiej jakby były idempotentne. Moduły można odpalać pojedynczo (imperatywnie) lub deklaratywnie, za pomocą opisanego stanu końcowego.

Inventory

To nic innego jak lista serwerów, do których ansible będzie się podłączało i które będzie “monitorowało”. Serwery można łączyć w grupy i potem do grup się odwoływać. Plusem jest to, że na podstawie takiej ów listy,  można potem budować zbiór różnych konfiguracji, w zależności od serwera.

Lista serwerów może zaś pochodzić z zewnętrznego źródła – na przykład Azure, OpenStack czy Google Cloud.

Playbook

To nic innego jak opis deklaratywny stanu systemu – narzędzie orchiestracji tego, co ma być zrobione. To jak bardzo to będzie skomplikowane to zależy już od nas. Może to być tak proste, jak odpalenie komendy restartu komputera czy bardziej skompilowane, jak i deployment wordpressa ze wszystkimi zależnościami.

Proste w opisie, bardzo złożone z wieloma opcjami w rzeczywistości. Przy prostych zastosowaniach, playbooki mogą być naprawdę super banalne. To co jednak daje nam ansible, to możliwość modelowania dużo bardziej złożonych deklaratywnych opisów stanu systemu. Dla przykładu - nasz playbook może zawierać listę tasków, ale także zamiast tego może się odwoływać do re-używalnych ról – które same w sobie są taksami. Może też na początku wykonywać zadania dla grupy serwerów web a potem dla grupy serwerów data.

Możliwości są, trzeba wiedzieć tylko co chce się osiągnąć.


Instalacja ansible

By móc korzystać z ansible, musimy go zainstalować. W zależności od systemu różnie się go instaluje. Na przykład mac to banalne:

brew install ansible

Nie liczcie za dużo na systemie Windows. Ansible jest produktem na systemy *nix. Na rynku są oczywiście moduły do komunikacji z Windows, jednak to nie jest takie piękne i ładne jak z *nix i do tego wymaga czasami pewnej ekstra konfiguracji. Aktualnie możemy skorzystać z Ansible wykorzystując Linux Bash, więc polecam wszystkim chętnym.


Podsumowanie

Jedyny problem, jaki ja mam z Ansible to jego złożoność. Jego autorzy chcieli stworzyć proste narzędzie, które nie będzie stało na przeszkodzie do tworzenia skryptów. Jednak patrząc na dokumentację mam wrażenie, że coś gdzieś poszło źle.

Nie zmienia to faktu, że Ansible szybko staje się coraz popularniejsze – nie tylko wśród linuxowców, ale także wśród ludzi tworzących rozwiązania pod Azure, OpenStack, AWS czy Google Cloud.

Jako wprowadzenie do Ansible chyba wystarczy. Następnym razem zrobimy mały playbook by zobaczyć, jak to się je i co jest możliwe. A tak kompletnie z ciekawości, kto w zaś korzysta już z Ansible? Kto o nim słyszał?

Zobacz więcej na Bulldogjob

Masz coś do powiedzenia?

Podziel się tym z 80 tysiącami naszych czytelników

Dowiedz się więcej
Rocket dog