Ansible. Playbook.

Jednym z podstawowych pojęć jakie pojawią się w kontekście Ansible to właśnie playbook.
Playbook jest to zestaw instrukcji które wykonuje Ansible na  hoscie lub grupie hostów. Innymi słowy, można to porównać do przepisu kulinarnego, który wykonuje kucharz.
Jeśli chcesz postawić środowisko dla aplikacji musisz wykonać szereg zadań i działań (według playbooka) by osiągnąć swój cel. Tak samo kucharz, aby przyrządzić pyszne danie musi wykonać szereg czynności i działań (wg przepisu kucharskiego), aby osiągnąć swój cel. To uproszczone porównanie do  kucharza jest jedynie ale dla lepszego zrozumienia koncepcji. Można powiedzieć po prostu że playbook to przepis kulinarny a Ansible to kucharz lub kucharka.

Za pomocą przepisu można zrobić proste danie jaki i wykwintne. Tak samo i za pomocą playbooka można wykonać proste polecenie, na przykład aby zainstalować aplikacje (yum install cośtam) albo można też postawić kilkaset serwerów, skonfigurować je, wykonać testy obciążeniowe, wygenerować raport, po czym złożyć je wszystkie. Możliwości są naprawdę ogromne i w tym tkwi siła Ansible. W możliwościach a także w jego prostocie.

A jak wygląda ten cały playbook? Jest to po prostu plik tekstowy w formacie YAML zawierający instrukcje. Dla przypomnienia: YAML jest to format przedstawiania struktury danych w czytelny dla człowieka sposób. Jeśli miałeś do czynienia z plikiem konfiguracyjnym w formacie XML lub JSON to polubisz pliki konfiguracyjne w YAML-u
Nasz Ansiblowy przepis, to znaczy playbook, składa się z konkretnych zadań (tasks) wykonywanych na wskazanych hostach. Zadanie, może być to na przykład wywołanie polecenia lub wykonanie skryptu, itp. Zwykle playbook składa się wielu zadań wykonywanych jeden po drugim według kolejności w jakiej zostały wpisane w playbooku. 

Dobrze, jako że najłatwiej uczyć się przez praktyczne przykłady to utwórzmy swój pierwszy, bardzo prosty playbook w formacie YAML. Chcemy aby za pomocą Ansible został zainstalowany program cowsay. Może to niezbyt przydatna aplikacja ale idealnie pasuje do przykładu naszego. Dla ułatwienia jeszcze zainstalujemy ją na lokalnie – na localhoście. Proste zadanie które w konsoli Ubuntu sprowadza się do polecenia sudo apt install cowsay. Jednak tu pozwoli nam jeszcze przetestować poprawne działanie naszego Ansible. 

Aha, jako że host na którym chcemy aby wykonało się polecenie to localhost – upewnij się, że w pliku inwentarzowym znajduję się ten wpis 
localhost ansible_connection=local
Tyle tytułem wstępu. Czas by uruchomić ulubiony edytor tekstowy i stworzyć plik pierwszy playbook, z treścią jak poniżej.

---
- name: my first playbook
  hosts: localhost
  become: yes

  tasks:
  - name: install cowsay for me
    apt:
     name: cowsay

Zapisz takie polecenia do pliku o nazwie play1.yml

Przeanalizujmy plik. Jak widać zaczynamy od nazwy, poniżej wskazujemy docelowy jest, a parametr become:yes mówi że do wykonania będą potrzebne podwyższone uprawnienia. 

W kolejnej sekcji mamy już określone zadanie. Również zaczynamy od nazwy, choć jest opcjonalna ale zawsze warto o to zadbać dla lepszej czytelności. Parametr apt mówi że będziemy korzystać z managera pakietów a poniżej name jakiego pakietu chcemy. 

Proste prawda. Pamiętaj, jako że to jest YAML to znaczenie mają tu w wcięcia w linijkach – one określają czy to jest kolejne polecenie w pliku czy element listy. 

Wykonaj polecenie ansible-playbook play1.yml

Jeśli wszystko przebiegło poprawnie to sprawdź teraz czy pakiet zainstalował się poprawnie wydając polecenie cowsay hello
Jeśli Krówka ładnie się przywita oznacza to wiele. A mianowicie, że poprawnie zainstalowałeś Ansible, poprawnie masz utworzony plik ewidencji i poprawnie zbudowałeś playbook.
To dużo na początek więc gratulacje! 🙂

 _____________
< Gratulacje! >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Tags: