Kako koristiti statičke i dinamičke inventare u Ansibleu - dio 4


U ovom 4. dijelu Ansible serije, objasnit ćemo kako koristiti statički i dinamički inventar za definiranje grupa hostova u Ansibleu.

U Ansible, upravljani hostovi ili serveri koji su pod kontrolom Ansible kontrolnog čvora definirani su u datoteci inventara hosta kao što je objašnjeno u. datoteka inventara je tekstualna datoteka koja se sastoji od imena hostova ili IP adresa upravljanih hostova ili udaljenih servera.

Upravljani hostovi mogu biti navedeni kao pojedinačni unosi ili kategorizirani pod imenom grupe kao što ćemo kasnije vidjeti. U Ansibleu postoje dvije vrste datoteka inventara: Statični i Dynamic.

Pogledajmo svaki od njih i vidimo kako možemo upravljati njima. Do sada pretpostavljamo da ste već instalirali Ansible na vašem kontrolnom čvoru i konfigurisali SSH vezu bez lozinke sa vašim upravljanim hostovima.

Datoteka statičnog inventara hosta

U Ansible, statička datoteka inventara je običan tekstualni fajl koji sadrži listu upravljanih hostova deklariranih pod grupom hostova koristeći ili imena hostova ili IP adrese.

Naziv grupe domaćina je zatvoren u uglastim zagradama, tj. [ime grupe]. Unosi upravljanog hosta su kasnije navedeni ispod imena grupe, svaki na svom redu. Kao što je ranije rečeno, hostovi su navedeni koristeći ili imena hostova ili IP adrese.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

Za potrebe ilustracije, napravićemo statičku datoteku inventara.

mkdir test_lab && cd test_lab
vim hosts
[webservers]
173.82.115.165

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

Sačuvajte fajl i izađite.

Kao što možete vidjeti u gornjoj datoteci inventara, kreirali smo 2 grupe hostova: webservers i database_servers. Također, kreirali smo dodatnu grupu pod nazivom datacenter koja uključuje grupu host grupa označenih sufiksom ': children' kao što se vidi iznad.

Ansible takođe dozvoljava da grupe hostova budu postavljene pod imenom grupe. U gornjoj datoteci inventara, grupe webservers i database_servers postavljene su pod datacenter.

NAPOMENA: Nije obavezno postaviti upravljane hostove u grupu domaćina. Možete ih jednostavno navesti koristeći njihova imena domaćina ili IP adrese, na primjer.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Koristimo sada nekoliko Ansible komandi za upućivanje na datoteku inventara hosta. Osnovna sintaksa za upravljanje zalihama je prikazana.

ansible {host-pattern} -i /path/of/inventory/file --list-hosts

Na primjer,

ansible all -i /root/test_labs/hosts --list-hosts

Alternativno, možete koristiti zamjenski znak * da zamijenite argument ‘all’.

ansible * -i /root/test_labs/hosts --list-hosts

Za popis hostova u grupi, navedite host grupu na mjestu host-obrasca.

ansible webservers -i /root/test_labs/hosts --list-hosts

Datoteka dinamičkog inventara hosta

U konfiguraciji – posebno postavci u oblaku kao što je AWS gdje se datoteka inventara stalno mijenja kako dodajete ili povlačite servere, praćenje hostova definiranih u datoteci inventara postaje pravi izazov. Postaje nezgodno vraćati se na host fajl i ažurirati listu hostova sa njihovim IP adresama.

I tu igra dinamički inventar. Dakle, šta je dinamički inventar? Dinamički inventar je skripta napisana u Python-u, PHP-u ili bilo kom drugom programskom jeziku. To je korisno u cloud okruženjima kao što je AWS gdje se IP adrese mijenjaju kada se virtuelni server zaustavi i ponovo pokrene.

Ansible je već razvio skripte za inventar za javne platforme u oblaku kao što su Google Compute Engine, Amazon EC2 instanca, OpenStack, RackSpace, cobbler, između ostalih.

Koje su prednosti dinamičkog inventara u odnosu na statičan inventar?
  • Dinamički inventari savršeno rade na smanjenju ljudske greške jer se informacije prikupljaju pomoću skripti.
  • Minimalni napor je potreban u upravljanju zalihama.

Možete napisati svoj vlastiti dinamički inventar u programskom jeziku po vašem izboru. Inventar bi trebao vratiti format u JSON kada se prođu odgovarajuće opcije.

Koristite postojeću skriptu dinamičkog inventara

Skripta koja se koristi za kreiranje dinamičkog inventara mora biti izvršna kako bi je Ansible mogao koristiti.

Da biste dohvatili informacije o hostovima unutar skripte dinamičkog inventara, jednostavno pokrenite.

./script --list 

Kao što je ranije navedeno, izlaz bi trebao biti u JSON formatu u nastavku.

Rječnik koji se sastoji od grupa (tj. web serveri, serveri_baze podataka)
  • Lista upravljanih hostova po grupi
  • Rječnik varijabli
Meta dictionary
  • Hostovi i hostvari
Sample Output
{
  "webservers": {
    "hosts": [
      "webserver1.example.com",
      "webserver2.example.com"
    ],
    "vars": {}
  },
  "database_servers": {
    "hosts": [
      "mysql_db1",
      "mysql_db2"
    ],
    "vars": {}
  },
  "_meta": {
    "hostvars": {
      "mysql_db2": {},
      "webserver2.example.com": {},
      "webserver1.example.com": {}, 
      "mysql_db1": {}
    }
  }
}
Zaključak

U ovom članku smo pokazali kako kreirati i statičke i dinamičke zalihe. Ukratko, statička datoteka inventara je običan tekstualni fajl koji sadrži listu upravljanih hostova ili udaljenih čvorova čiji brojevi i IP adrese ostaju prilično konstantni.

S druge strane, dinamički host fajl se stalno mijenja kako dodajete nove hostove ili uklanjate stare. IP adrese hostova su također dinamičke dok zaustavljate i pokrećete nove host sisteme. Nadamo se da vam je ovaj vodič bio informativan.