Wéi benotzt statesch an dynamesch Inventairen an Ansible - Deel 4


An dësem Deel 4 vun der Ansible Serie, wäerte mir erkläre wéi statesch an dynamesch Inventar benotze fir Gruppe vun Hosten an Ansible ze definéieren.

An engem Ansible, verwalteten Hosten oder Serveren, déi vum Ansible Kontrollnode kontrolléiert ginn, sinn an enger Hostinventardatei definéiert wéi erkläert an.

Managed Hosten kënnen entweder als individuell Entréen opgezielt ginn oder ënner engem Gruppnumm kategoriséiert ginn wéi mir spéider wäerte gesinn. An Ansible ginn et zwou Aarte vun Inventardateien: statesch an dynamesch.

Loosst eis all eenzel vun dësen kucken a kucken wéi mir se kënne verwalten. Vun elo un, mir huelen un datt Dir schonn Ansible op Ärem Control Node installéiert hutt, a Passwuertlos SSH Verbindung mat Äre verwalteten Hosten konfiguréiert hutt.

An Ansible ass eng statesch Inventardatei eng einfach Textdatei déi eng Lëscht vu verwalteten Hosten enthält, déi ënner enger Hostgrupp deklaréiert sinn mat entweder Hostnumm oder IP Adressen.

En Hostgruppnumm ass a véiereckege Klammeren zougemaach, dh [Gruppnumm]. Déi verwalteten Hostentrée gi méi spéit ënner dem Gruppnumm opgelëscht, jidderee op senger eegener Linn. Wéi virdru diskutéiert, sinn d'Hosts opgelëscht mat entweder Hostnamen oder IP Adressen.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

Fir Illustratiounszwecker erstellen mir eng statesch Inventardatei.

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

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

Späichert d'Datei a gitt eraus.

Wéi Dir an der Inventardatei hei uewen kënnt gesinn, hu mir 2 Hostgruppen erstallt: Webserver an database_servers. Och hu mir en zousätzleche Grupp mam Numm Datacenter erstallt, deen eng Grupp vu Hostgruppen enthält, déi mat : Kanner Suffix bezeechent gëtt, wéi uewen gesi.

Ansible erlaabt och Gruppe vu Hosten ënner engem Gruppnumm ze setzen. An der Inventardatei hei uewen sinn d'Webserver an database_servers Gruppen ënner dem Datacenter gesat.

NOTÉIERT: Et ass net obligatoresch verwalteten Hosten an engem Hostgrupp ze placéieren. Dir kënnt se einfach mat hiren Hostnamen oder IP Adressen zum Beispill oplëschten.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Loosst eis elo e puer Ansible Kommandoen benotzen fir d'Hostinventardatei ze referenzéieren. D'Basis Syntax fir Inventarmanagement ass wéi gewisen.

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

Zum Beispill,

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

Alternativ kënnt Dir d'Jokerteken * benotzen fir 'all' Argument ze ersetzen.

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

Fir Hosten an engem Grupp ze lëschten, spezifizéiert den Hostgrupp op der Plaz vum Hostmuster.

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

An enger Konfiguratioun - besonnesch e Cloud-Setup wéi AWS, wou d'Inventardatei dauernd ännert wéi Dir Server addéiert oder ofbaut, Tabs op d'Hosten, déi an der Inventardatei definéiert sinn, gëtt eng richteg Erausfuerderung. Et gëtt onbequem zréck an d'Hostdatei zréckzekommen an d'Lëscht vun den Hosten mat hiren IP Adressen ze aktualiséieren.

An dat ass wou en dynameschen Inventar spillt. Also wat ass eng dynamesch Inventar? En dynameschen Inventar ass e Skript geschriwwen a Python, PHP oder all aner Programméierungssprooch. Et ass praktesch an Cloud Ëmfeld wéi AWS wou IP Adressen änneren eemol e virtuelle Server gestoppt an erëm ugefaang gëtt.

Ansible huet schonn Inventar Scripte fir ëffentlech Cloud Plattformen entwéckelt wéi Google Compute Engine, Amazon EC2 Instanz, OpenStack, RackSpace, Cobbler, ënner anerem.

  • Dynamic Inventaire maachen eng perfekt Aarbecht fir mënschlech Feeler ze reduzéieren, well Informatioun mat Scripte gesammelt gëtt.
  • Minimal Effort ass erfuerderlech fir Inventaire ze managen.

Dir kënnt Är eege personaliséiert dynamesch Inventar an enger Programméierungssprooch vun Ärer Wiel schreiwen. Den Inventar soll e Format am JSON zréckginn wann entspriechend Optiounen passéiert sinn.

E Skript dat benotzt gëtt fir en dynamesche Inventar ze kreéieren muss ausführbar gemaach ginn sou datt Ansible et ka benotzen.

Fir Informatioun iwwer d'Host an engem dynamesche Inventarskript ze recuperéieren einfach lafen.

# ./script --list 

Wéi virdru uginn, sollt d'Ausgab am JSON am Format hei drënner sinn.

  • Eng Lëscht vu verwalteten Hosten pro Grupp
  • En Dictionnaire vu Variabelen

  • Host an Hostvars

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

An dësem Artikel hu mir bewisen wéi een statesch an dynamesch Inventaire erstellt. Zesummegefaasst ass eng statesch Inventardatei eng einfach Textdatei mat enger Lëscht vu verwalteten Hosten oder Fernknäppchen deenen hir Zuelen an IP Adressen zimlech konstant bleiwen.

Op der anerer Säit, eng dynamesch Hostdatei ännert sech ëmmer méi wéi Dir nei Hosten bäidréit oder al déi ofbaut. D'IP Adresse vun de Hosten sinn och dynamesch wéi Dir stoppt an nei Hostsystemer start. Mir hoffen datt Dir dësen Tutorial informativ fonnt hutt.