V predošlej časti seriálu o automatizačnom nástroji Ansible sme si stručne zhrnuli históriu projektu. Popísali sme tiež základný koncept fungovania, z ktorého vyplývajú určité výhody použitia nástroja Ansible. Po vymenovaní a krátkom priblížení výhod sme sa sústredili na inštaláciu nástroja Ansible. Nakoniec sme si ukázali, ako overiť pripojenie k cieľovým systémom (managed nodes) z riadiaceho servera (control node) a získať zároveň podrobné informácie o managed nodes.
V tejto časti sa pozrieme na 3 súbory: konfiguračný súbor (ansible.cfg), súbor so zoznamom adries managed nodes (inventory) a na zoznam úloh uložených v playbooku (playbook.yaml).
Vytvárame a aplikujeme SSH kľúč
Aby sme pri každom spustení Ansible nemuseli zadávať heslo k pripojeniu cez SSH, vytvoríme SSH kľúč s heslom (prvý riadok – viac aj v návode Pripojenie na server pomocou SSH kľúčov) a jeho verejnú časť skopírujeme na všetky managed nodes (druhý a tretí riadok).
ssh-keygen
ssh-copy-id tibor@10.1.1.5
ssh-copy-id tibor@10.1.1.9
Následne sa skúsime pripojiť cez SSH na všetky managed nodes, aby sme zistili, či pripojenie pomocou SSH kľúča funguje:
ssh 10.1.1.5
ssh 10.1.1.9
Odteraz príkaz z predošlého návodu môžeme zjednodušiť vynechaním prihlasovacieho mena takto:
ansible all -i "10.1.1.5,10.1.1.9," -m ping --ask-pass
Vytvárame konfiguračný súbor
Vytvoríme si priečinok s názvom ansible-test
, do ktorého budeme ukladať všetky súbory potrebné na prácu s nástrojom Ansible:
mkdir ~/ansible-test
Ďalej vytvoríme konfiguračný súbor ansible.cfg
vo formáte INI (prvý riadok), do ktorého vložíme štyri riadky (ostatné riadky):
nano ~/ansible-test/ansible.cfg
[defaults] inventory = inventory private_key_file = ~/.ssh/id_rsa.pub ask_pass = True
Vložíme skopírovaný obsah, uložíme pomocou klávesovej skratky Ctrl + X
a následne stlačením klávesu y
a potvrdením klávesom Enter
.
Riadok s obsahom inventory = inventory
určuje, že súbor s adresami managed nodes (inventory
) je uložený v rovnakom priečinku ako konfiguračný súbor (tu ~/ansible-test
) a jeho názov je inventory
. Predposledný riadok private_key_file = ~/.ssh/id_rsa.pub
nástroju Ansible určuje cestu k súboru verejného SSH kľúča, ktorý sme na začiatku tohto návodu skopírovali do všetkých managed nodes. Nastavenie ask_pass = True
znamená, že sa pri playbooku vždy bude vyžadovať heslo pre pripojenie cez SSH a nebude už potrebný prepínač --ask-pass
.
Vytvárame súbor so zoznamom adries managed nodes
V konfiguračnom súbore sme nástroj Ansible nastavili tak, aby zoznam IP adries cieľových systémov (managed nodes) hľadal v súbore inventory
. Súbor teda vytvoríme (prvý riadok) a zapíšeme doň IP adresy všetkých managed nodes (jedna adresa na jeden riadok – ostatné riadky):
nano ~/ansible-test/inventory
10.1.1.5 10.1.1.9
Vložíme skopírovaný obsah, uložíme pomocou klávesovej skratky Ctrl + X
a následne stlačením klávesu y
a potvrdením klávesom Enter
.
Odteraz príkaz z predošlého návodu môžeme zjednodušiť vynechaním prihlasovacieho mena, a tiež vynechaním IP adries managed nodes, takto:
ansible all -i inventory -m ping
Vytvárame jednoduchý playbook
Vyššie v tomto návode sme vytvorili konfiguračný súbor. V ňom sme určili, s ktorými managed nodes Ansible bude komunikovať. Spolu s aplikovaným SSH kľúčom sme príkaz z predošlého návodu skrátili a zjednodušili.
Vytvoríme jednoduchý playbook s názvom playbook.yaml
(prvý riadok), pomocou ktorého na všetkých managed nodes (hosts: all
) spustíme úlohu s modulom ping (tasks: ping
):
nano ~/ansible-test/playbook.yaml
- hosts: all tasks: - ping:
Vložíme skopírovaný obsah, uložíme pomocou klávesovej skratky Ctrl + X
a následne stlačením klávesu y
a potvrdením klávesom Enter
.
Ansible obsahuje nástroj ansible-playbook
, vďaka ktorému môžeme spustiť úlohy (pomocou modulov) na vopred určených managed nodes. Keďže všetky parametre máme zapísané v súbore playbook.yaml
, stačí ho iba spustiť:
ansible-playbook playbook.yml
Jednoduchým a krátkym príkazom sme práve nechali spustiť úlohu a v rámci nej modul ping (tasks: ping) na všetkých managed nodes (hosts: all). Vo výstupe Ansible vrátil informácie o priebehu úloh a nakoniec štatistiku o tom, či niečo bolo zmenené (changed), nedostupné (unreachable), neúspešné (failed), preskočené (skipped), zachránené (rescued) alebo ignorované (ignored). Viac sa týmto štatistikám budeme venovať v ďalších častiach tohto seriálu.
Zhrnutie
Definovaním obsahu konfiguračného súboru, zoznamu IP adries managed nodes a vytvorením jednoduchého playbooku sme dosiahli stav, v ktorom dokážeme automatizovanie v nástroji Ansible ovládať efektívne a rýchlo. Načrtli sme tak skutočnú silu automatizačného nástroja Ansible, na ktorej budeme stavať v ďalších častiach tohto seriálu.