W poprzednim wpisie zobaczyłeś użycie poleceń ad-hoc, nadszedł czas, abyś zajął się tworzeniem pełnej automatyzacji w Ansible. W tym celu napiszesz swój pierwszy playbook, który wyśle instrukcje na wszystkie maszyny, które znajdują się w pliku hosts i zainstaluje serwer www.
Pierwszy playbook Ansible
Generalnie utworzenie playbook’a jest proste, wystarczy dostęp do jakiegokolwiek edytora tekstowego, plan co chcesz zrobić oraz znajomość składni.
Pisanie playbook’a musisz rozpocząć od wskazania dla Ansible początku „kodu”. Robisz to przez wpisanie trzech znaków minus (—). Po nim możesz również po znaku hash (#) dodać swój komentarz.
Poniżej początek twojego pierwszego playbook’a.
1 |
--- # Pierwszy playbook |
Następnie musisz dodać miejsce docelowe do którego wysłany zostanie cały kod pierwszego playbook’a. Musisz w tym celu dodać wiersz – hosts: servers. Dzięki temu playbook odczyta plik hosts z Ansible w którym znajduje się grupa maszyn o nazwie servers.
1 2 |
--- # Pierwszy playbook - hosts: servers |
Kolejnym krokiem jest dodanie użytkownika, który będzie uruchamiał kolejne polecenia z playbook’a. Musisz dodać kolejny wiersz koniecznie pod hosts z odstępem wykonanym poprzez spacje. W tym celu dodaj user z wartością np. ansible jako nazwą użytkownika.
1 2 3 |
--- # Pierwszy playbook - hosts: servers user: ansible |
Warto również jeżeli dodasz dodatkowe uprawnienia root’a przy instalacji pakietów na zdalnym hoście. Musisz dodać wiersz become: yes. Dzięki czemu playbook stanie się kodem z uprawnieniami root.
1 2 3 4 |
--- # Pierwszy playbook - hosts: servers user: ansible become: yes |
Kolejnym punktem playbook’a jest zdefiniowanie sposobu połączenia. Na ten moment wystarczy, aby był on realizowany poprzez ssh.
1 2 3 4 5 |
--- # Pierwszy playbook - hosts: servers user: ansible become: yes connection: ssh |
Na koniec musisz włączyć lub wyłączyć zbieranie informacji na temat zdalnego systemu. W tym celu musisz dodać wiersz z parametrem gather_facts z wartością yes lub no. Warto dodać, że gather_facts spowalnia nieco wykonywanie playbook’a, szczególnie gdy jest bardzo dużo maszyn w środowisku.
1 2 3 4 5 6 |
--- # Pierwszy playbook - hosts: servers user: ansible become: yes connection: ssh gather_facts: no |
Powyższe wiersze muszą zawsze znaleźć się w playbooku. Ja preferuję, żeby dodawać parametry w sposób jawny nawet jeżeli ansible część z nich ustawia domyślnie, np. jak w przypadku gather_facts domyślną wartością jest status yes. Przejdź teraz do najważniejszej części tego playbook’a. Chcesz w końcu zainstalować zdalnie aplikację na wszystkich dostępnych serwerach.
Dla przykładu niech będzie serwer www. Będziesz potrzebował jeszcze jednego słowa kluczowego czyli tasks. Jak sama nazwa wskazuje chcesz wykonać zadanie, ale do tego będziesz potrzebował jeszcze modułu lub modułów do jego poprawnego zakończenia.
Dodasz również nazwę zadania poprzez parametr name, jest to bardzo pomocne przy opisaniu szczególnie długich projektów.
W celu instalacji musisz wykonać action, za nim musisz wywołać moduł yum (który w Centos/RedHat instaluje paczki z repozytorium). Ważna jest również nazwa instalowanej aplikcji (name) oraz jej status (state). W tym przypadku wartością parametru state jest installed, czyli jeżeli aplikacja nie jest obecnie zainstalowana w systemie, zostanie do niego dodana.
1 2 3 4 5 6 7 8 9 |
--- # Pierwszy playbook - hosts: servers user: ansible become: yes connection: ssh gather_facts: yes tasks: - name: Instalacja pierwszej aplikacji action: yum name=httpd state=installed |
Bardzo istotne przy tworzeniu playbook’a jest używanie spacji do tworzenia wcięć oraz odstępów pomiędzy kolejnymi parametrami. Ansible w przypadku błędu zwróci informację ze wskazaniem miejsca jego występowania.
Podsumowanie
Pierwszy playbook za Tobą, mam nadzieję, że rozumiesz dlaczego warto nauczyć się tego narzędzia.Zapraszam na kolejnym wpis, w którym zobaczysz w jaki sposób ograniczyć czas wykonania playbook’a.
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).