Kako uporabljati statične in dinamične zaloge v programu Ansible - 4. del


V tem 4. delu Ansible Series bomo razložili, kako uporabiti statični in dinamični inventar za definiranje skupin gostiteljev v Ansible.

V programu Ansible so upravljani gostitelji ali strežniki, ki jih nadzoruje nadzorno vozlišče Ansible, definirani v datoteki inventarja gostitelja, kot je razloženo v. Datoteka inventarja gostitelja je besedilna datoteka, ki jo sestavljajo gostiteljska imena ali naslovi IP upravljanih gostiteljev ali oddaljenih strežnikov.

Upravljani gostitelji so lahko navedeni kot posamezni vnosi ali razvrščeni pod ime skupine, kot bomo videli kasneje. V programu Ansible obstajata dve vrsti datotek inventarja: statični in dinamični.

Oglejmo si vsako od teh in poglejmo, kako lahko z njimi upravljamo. Do zdaj domnevamo, da ste na krmilno vozlišče že namestili Ansible in konfigurirali povezavo SSH brez gesla z upravljanimi gostitelji.

V programu Ansible je statična inventarna datoteka navadna besedilna datoteka, ki vsebuje seznam upravljanih gostiteljev, razglašenih pod gostiteljsko skupino z uporabo imen gostiteljev ali naslovov IP.

Ime gostiteljske skupine je zaprto v oglatih oklepajih, tj. [ime skupine] . Vnosi upravljanega gostitelja so pozneje navedeni pod imenom skupine, vsak v svoji vrstici. Kot smo že omenili, so gostitelji navedeni z imeni gostiteljev ali naslovi IP.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

Za ponazoritev bomo ustvarili statično evidenčno datoteko.

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

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

Shranite datoteko in zapustite.

Kot lahko vidite v zgornji inventarni datoteki, smo ustvarili dve gostiteljski skupini: spletni strežniki in strežniki baz podatkov. Ustvarili smo tudi dodatno skupino, imenovano datacenter, ki vključuje skupino gostiteljskih skupin, označenih s pripono : children , kot je prikazano zgoraj.

Ansible omogoča tudi, da se skupine gostiteljev postavijo pod ime skupine. V zgornji inventarni datoteki so bili spletni strežniki in skupine strežnikov baze podatkov postavljeni pod podatkovno središče.

OPOMBA: Upravljanih gostiteljev ni obvezno umestiti v gostiteljsko skupino. Lahko jih preprosto navedete na primer z imeni gostiteljev ali naslovi IP.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Zdaj uporabimo nekaj ukazov Ansible za sklicevanje na datoteko inventarja gostitelja. Osnovna sintaksa za upravljanje zalog je, kot je prikazano.

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

Na primer,

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

Lahko pa uporabite nadomestni znak * , da zamenjate argument ‘all’ .

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

Če želite gostitelje našteti v skupini, na mestu vzorca gostitelja določite skupino gostiteljev.

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

V konfiguraciji - še posebej v oblaku, kot je AWS, kjer se datoteka inventarja nenehno spreminja, ko dodajate ali razstavljate strežnike, postane spremljanje gostiteljev, definiranih v datoteki inventarja, pravi izziv. Vrniti se v datoteko gostitelja in posodobiti seznam gostiteljev z njihovimi naslovi IP postane neprijetno.

In tu nastopi dinamičen inventar. Kaj je torej dinamični popis? Dinamični inventar je skript, napisan v Pythonu, PHP ali katerem koli drugem programskem jeziku. Priročno je v oblačnih okoljih, kot je AWS, kjer se naslovi IP spremenijo, ko se navidezni strežnik ustavi in znova zažene.

Ansible je že razvil skripte za javne platforme v oblaku, kot so Google Compute Engine, primerek Amazon EC2, OpenStack, RackSpace, cobbler, med drugim.

  • Dinamični inventarji nalašč zmanjšajo človeške napake, saj se informacije zbirajo s pomočjo skriptov.
  • Pri upravljanju zalog je potreben minimalen napor.

Dinamični inventar lahko po lastni izbiri napišete v programskem jeziku. Popis mora vrniti obliko v obliki JSON, ko se posredujejo ustrezne možnosti.

Skript, ki se uporablja za ustvarjanje dinamičnega inventarja, mora biti izvedljiv, da ga lahko Ansible uporabi.

Če želite pridobiti informacije o gostiteljih znotraj skripta za dinamični inventar, preprosto zaženite.

# ./script --list 

Kot smo že omenili, mora biti rezultat v obliki JSON v spodnji obliki.

  • Seznam upravljanih gostiteljev na skupino
  • Slovar spremenljivk

  • Gostitelji in gostitelji

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

V tem članku smo pokazali, kako ustvariti tako statične kot dinamične zaloge. Če povzamemo, je datoteka statičnega inventarja navadna besedilna datoteka, ki vsebuje seznam upravljanih gostiteljev ali oddaljenih vozlišč, katerih številke in naslovi IP ostajajo dokaj konstantni.

Po drugi strani pa se dinamična gostiteljska datoteka spreminja, ko dodajate nove ali razstavljamo stare. Naslovi IP gostiteljev so tudi dinamični, ko zaustavite in zaženete nove gostiteljske sisteme. Upamo, da se vam je ta vadnica zdela informativna.