Kako koristiti statičke i dinamičke zalihe u Ansible - 4. dio


U ovom dijelu 4 serije Ansible objasnit ćemo kako koristiti statički i dinamički inventar za definiranje grupa domaćina u programu Ansible.

U Ansibleu, upravljani hostovi ili poslužitelji kojima upravlja kontrolni čvor Ansible definirani su u datoteci inventara hosta kako je objašnjeno. Datoteka inventara hosta je tekstualna datoteka koja se sastoji od imena hosta ili IP adresa upravljanih hostova ili udaljenih poslužitelja.

Upravljani hostovi mogu se navesti kao pojedinačni unosi ili kategorizirati pod nazivom grupe kao što ćemo kasnije vidjeti. U Ansibleu postoje dvije vrste datoteka inventara: statička i dinamička.

Pogledajmo svaku od njih i vidimo kako možemo njima upravljati. Do sada pretpostavljamo da ste već instalirali Ansible na svoj upravljački čvor i konfigurirali SSH vezu bez lozinke na upravljane hostove.

U programu Ansible, statička datoteka inventara je obična tekstualna datoteka koja sadrži popis upravljanih hostova deklariranih pod grupom hostova koristeći imena hosta ili IP adrese.

Naziv grupe domaćina zatvoren je u uglate zagrade, tj. [naziv grupe] . Unosi upravljanog hosta kasnije su navedeni ispod naziva grupe, svaki u svom retku. Kao što je ranije spomenuto, hostovi se navode koristeći imena hosta ili IP adrese.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

U svrhu ilustracije stvorit ć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

Spremite datoteku i izađite.

Kao što vidite u gornjoj datoteci inventara, stvorili smo 2 grupe domaćina: web poslužitelje i poslužitelje baze podataka. Također, stvorili smo dodatnu grupu nazvanu datacenter koja uključuje skupinu grupa domaćina označenih sufiksom : children kao što je prikazano gore.

Ansible također omogućuje postavljanje grupa domaćina pod imenom grupe. U gornjoj datoteci inventara, web poslužitelji i grupe poslužitelja baze podataka postavljeni su ispod centra podataka.

NAPOMENA: Nije obavezno smještanje upravljanih domaćina u grupu domaćina. Možete ih jednostavno navesti koristeći njihova imena hostova ili IP adrese, na primjer.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Upotrijebimo sada nekoliko naredbi Ansible za referenciranje datoteke inventara hosta. Osnovna sintaksa za upravljanje zalihama je kako je prikazano.

$ 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

Da biste naveli hostove u grupi, navedite grupu domaćina na mjestu uzorka hosta.

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

U konfiguraciji - posebno u oblaku, poput AWS-a, gdje se datoteka inventara neprestano mijenja dok dodajete ili uklanjate poslužitelje, držanje kartica na hostovima definiranim u datoteci inventara postaje pravi izazov. Postaje nezgodno vraćati se na datoteku hosta i ažurirati popis hostova s njihovim IP adresama.

I tu dolazi do izražaja dinamični inventar. Pa što je dinamički inventar? Dinamički inventar je skripta napisana na Pythonu, PHP-u ili bilo kojem drugom programskom jeziku. Dobro dolazi u oblačnim okruženjima, poput AWS-a, gdje se IP adrese mijenjaju nakon što se virtualni poslužitelj zaustavi i ponovo pokrene.

Ansible je već razvio skripte inventara za javne oblačne platforme kao što su Google Compute Engine, instanca Amazon EC2, OpenStack, RackSpace, postolar, između ostalog.

  • Dinamični inventari savršeno rade na smanjenju ljudskih pogrešaka jer se podaci prikupljaju pomoću skripti.
  • Potreban je minimalan napor u upravljanju zalihama.

Možete napisati vlastiti prilagodbeni dinamički inventar na programskom jeziku po vašem izboru. Popis bi trebao vratiti format u JSON-u kada se donesu odgovarajuće opcije.

Skriptu koja se koristi za stvaranje dinamičkog inventara mora učiniti izvršnom kako bi je Ansible mogao koristiti.

Jednostavno pokrenite podatke o domaćinima unutar skripte dinamičkog inventara.

# ./script --list 

Kao što je ranije istaknuto, izlaz bi trebao biti u JSON-u u donjem formatu.

  • Popis upravljanih hostova po grupi
  • Rječnik varijabli

  • Domaćini i domaćini

{
  "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": {}
    }
  }
}

U ovom smo članku pokazali kako stvoriti statičke i dinamičke zalihe. Ukratko, statična datoteka inventara je obična tekstualna datoteka koja sadrži popis upravljanih hostova ili udaljenih čvorova čiji brojevi i IP adrese ostaju prilično konstantni.

S druge strane, dinamička datoteka hosta neprestano se mijenja dok dodajete nove ili uklanjate stare. IP adrese hostova također su dinamične dok zaustavljate i pokrećete nove hostovne sustave. Nadamo se da vam je ovaj vodič bio informativan.