1. Báza znalostí
  2. Cloud a servery
  3. Nástroje
  4. Ansible
  5. Ansible – 2. Konfiguračný súbor, inventory a playbook

Ansible – 2. Konfiguračný súbor, inventory a playbook

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.

Aktualizované 22. marca 2022

Bol pre vás tento návod nápomocný?

Mohlo by vás tiež zaujímať:

Spýtajte sa nás, radi poradíme
Po - Ne 8:00-22:00
Kontaktovať podporu