Cum se utilizează inventarele statice și dinamice în Ansible – Partea 4

În această Parte 4 a seriei Ansible, vom explica cum se utilizează inventarul static și dinamic pentru a defini grupuri de gazde în Ansible.

În Ansible, gazdele sau serverele gestionate care sunt controlate de nodul de control Ansible sunt definite într-un fișier de inventar al gazdelor, așa cum se explică în. Un fișier de inventar al gazdelor este un fișier text care constă în nume de gazde sau adrese IP ale gazdelor gestionate sau ale serverelor la distanță.

Gazdele gestionate pot fi listate fie ca intrări individuale, fie clasificate sub un nume de grup, așa cum vom vedea mai târziu. În Ansible, există două tipuri de fișiere de inventar: Static și Dynamic.

Să aruncăm o privire la fiecare dintre acestea și să vedem cum le putem gestiona. Până acum, presupunem că ați instalat deja Ansible pe nodul de control și ați configurat conexiunea SSH fără parolă la gazdele gestionate.

Fișier de inventar static al gazdelor

În Ansible, un fișier de inventar static este un fișier text simplu care conține o listă de gazde gestionate declarate în cadrul unui grup de gazde folosind fie nume de gazde, fie adrese IP.

Un nume de grup de gazde este cuprins între paranteze pătrate, de exemplu . Intrările de gazde gestionate sunt enumerate ulterior sub numele grupului, fiecare pe propria linie. După cum s-a discutat anterior, gazdele sunt listate folosind fie nume de gazde, fie adrese IP.

Host A ip_address Host B ip_addressHost c ip_address

În scopul ilustrării, vom crea un fișier de inventar static.

# mkdir test_lab && cd test_lab# vim hosts
Fisier de inventar static
173.82.115.165173.82.220.239webserversdatabase_servers

Salvați fișierul și ieșiți.

După cum puteți vedea în fișierul de inventar de mai sus, am creat 2 grupuri de gazde: webservers și database_servers. De asemenea, am creat un grup suplimentar numit datacenter care include un grup de grupuri de gazde notat cu sufixul ': children' așa cum se vede mai sus.

Ansible permite, de asemenea, ca grupurile de gazde să fie plasate sub un nume de grup. În fișierul de inventar de mai sus, grupurile webservers și database_servers au fost plasate sub datacenter.

NOTA: Nu este obligatoriu să plasați gazdele gestionate într-un grup de gazde. Puteți să le listați pur și simplu folosind numele lor de gazdă sau adresele IP, de exemplu.

173.82.202.239172.82.115.165load_balancer.pnl.com

Să folosim acum câteva comenzi Ansible pentru a face referire la fișierul de inventariere a gazdelor. Sintaxa de bază pentru gestionarea inventarului este așa cum se arată.

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

De exemplu,

$ ansible all -i /root/test_labs/hosts --list-hosts
List Ansible Hosts

Alternativ, puteți utiliza caracterul wildcard * pentru a înlocui argumentul 'all'.

$ ansible * -i /root/test_labs/hosts --list-hosts
List Ansible Hosts Using Wildcards

Pentru a lista gazdele dintr-un grup, specificați grupul de gazde în locul lui host-pattern.

$ ansible webservers -i /root/test_labs/hosts --list-hosts
List Ansible Hosts in Group

Dynamic Host Inventory File

Într-o configurație – în special o configurație cloud, cum ar fi AWS, în care fișierul de inventar se schimbă în mod constant pe măsură ce adăugați sau scoateți din funcțiune servere, urmărirea gazdelor definite în fișierul de inventar devine o adevărată provocare. Devine incomod să te întorci la fișierul de gazde și să actualizezi lista de gazde cu adresele lor IP.

Și aici intervine un inventar dinamic. Așadar, ce este un inventar dinamic? Un inventar dinamic este un script scris în Python, PHP sau orice alt limbaj de programare. Acesta vine la îndemână în mediile cloud, cum ar fi AWS, unde adresele IP se schimbă odată ce un server virtual este oprit și pornit din nou.

Ansible a dezvoltat deja scripturi de inventariere pentru platforme cloud publice, cum ar fi Google Compute Engine, Amazon EC2 instance, OpenStack, RackSpace, cobbler, printre altele.

Care sunt avantajele unui inventar dinamic față de un inventar static?
  • Inventariile dinamice fac o treabă perfectă de reducere a erorilor umane, deoarece informațiile sunt colectate cu ajutorul scripturilor.
  • Efort minim este necesar în gestionarea inventarelor.

Puteți scrie propriul inventar dinamic personalizat într-un limbaj de programare la alegere. Inventarul ar trebui să returneze un format în JSON atunci când sunt trecute opțiunile corespunzătoare.

Utilizați un script de inventar dinamic existent

Un script care este utilizat pentru a crea un inventar dinamic trebuie să fie făcut executabil pentru ca Ansible să îl poată utiliza.

Pentru a prelua informații despre gazdele din interiorul unui script de inventar dinamic, pur și simplu rulați.

# ./script --list 

Așa cum am subliniat mai devreme, rezultatul ar trebui să fie în JSON în formatul de mai jos.

Un dicționar care cuprinde grupuri (i.e webservers, database_Servers)
  • O listă de gazde gestionate per grup
  • Un dicționar de variabile
Meta dicționar
  • Hosts and hostvars
Eșantion de ieșire
Concluzie

În acest articol, am demonstrat cum să creăm atât inventare statice, cât și dinamice. Pe scurt, un fișier de inventar static este un fișier text simplu care conține o listă de gazde gestionate sau noduri la distanță ale căror numere și adrese IP rămân destul de constante.

Pe de altă parte, un fișier dinamic al gazdelor se modifică continuu pe măsură ce adăugați noi gazde sau le scoateți din uz pe cele vechi. Adresele IP ale gazdelor sunt, de asemenea, dinamice pe măsură ce opriți și porniți noi sisteme gazdă. Sperăm că ați găsit acest tutorial informativ.

.