How to Use Static and Dynamic Inventories in Ansible – Part 4

Az Ansible sorozat 4. részében elmagyarázzuk, hogyan használjuk a statikus és dinamikus leltárt a hosztok csoportjainak meghatározásához az Ansible-ban.

Az Ansible-ban az Ansible vezérlő csomópont által irányított hosztokat vagy szervereket egy host inventory fájlban határozzuk meg, ahogy azt az alábbiakban ismertetjük. A hosztleltárfájl egy szöveges fájl, amely a kezelt hosztok vagy távoli kiszolgálók hosztneveiből vagy IP-címeiből áll.

A kezelt hosztok vagy egyedi bejegyzésként, vagy egy csoportnév alatt kategorizálhatók, amint azt később látni fogjuk. Az Ansible-ban kétféle leltárfájl létezik: Statikus és dinamikus.

Nézzük meg mindegyiket, és nézzük meg, hogyan tudjuk kezelni őket. Mostanra feltételezzük, hogy már telepítettük az Ansible-t a vezérlő csomópontra, és konfiguráltuk a jelszó nélküli SSH-kapcsolatot a kezelt hosztokhoz.

Statikus hosztleltárfájl

A statikus leltárfájl az Ansible-ban egy egyszerű szöveges fájl, amely egy hosztcsoport alatt bejelentett kezelt hosztok listáját tartalmazza, hostnevek vagy IP-címek használatával.

A hostcsoport neve szögletes zárójelbe van zárva, pl. . A kezelt állomásbejegyzések később a csoportnév alatt, külön sorban szerepelnek. Mint korábban tárgyaltuk, a hosztok felsorolása vagy hosztnévvel, vagy IP-címmel történik.

Host A ip_address Host B ip_addressHost c ip_address

A szemléltetés kedvéért létrehozunk egy statikus leltárfájlt.

# mkdir test_lab && cd test_lab# vim hosts
Statikus leltárfájl
173.82.115.165173.82.220.239webserversdatabase_servers

Mentsük el a fájlt és lépjünk ki.

Amint a fenti leltárfájlban látható, 2 hostcsoportot hoztunk létre: webservers és database_servers. Emellett létrehoztunk egy további csoportot datacenter néven, amely a fent látható módon a ': children' utótaggal jelölt állomáscsoportokat tartalmazza.

Az Ansible azt is lehetővé teszi, hogy állomáscsoportokat helyezzünk el egy csoportnév alatt. A fenti inventory fájlban a webservers és database_servers csoportok a datacenter alá kerültek.

MEGJEGYZÉS: Nem kötelező a menedzselt hosztokat hostcsoportba helyezni. Egyszerűen felsorolhatjuk őket például a hosztnevük vagy IP-címük alapján.

173.82.202.239172.82.115.165load_balancer.pnl.com

Most használjunk néhány Ansible-parancsot a hosztok leltárfájljára való hivatkozáshoz. A leltárkezelés alapvető szintaxisa a következőképpen néz ki.

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

Például,

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

Alternatívaként használhatjuk a * joker karaktert a 'all' argumentum helyett.

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

A csoportba tartozó hosztok listázásához a host-pattern helyett adja meg a host-csoportot.

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

Dynamic Host Inventory File

Egy konfigurációban – különösen egy olyan felhős beállításban, mint az AWS, ahol a leltárfájl folyamatosan változik, ahogy szervereket adunk hozzá vagy vonunk ki, a leltárfájlban meghatározott hosztok nyomon követése igazi kihívássá válik. Kényelmetlen lesz visszamenni a hosztfájlhoz, és frissíteni a hosztok listáját az IP-címeikkel.

És itt jön a képbe a dinamikus leltár. Mi is az a dinamikus leltár? A dinamikus leltár egy Python, PHP vagy más programozási nyelven írt szkript. Jól jön az olyan felhőkörnyezetekben, mint az AWS, ahol az IP-címek megváltoznak, amint egy virtuális szerver leáll és újraindul.

Az Ansible már kifejlesztett leltárszkripteket többek között olyan nyilvános felhőplatformokhoz, mint a Google Compute Engine, az Amazon EC2 instance, az OpenStack, a RackSpace és a cobbler.

Melyek a dinamikus leltár előnyei a statikus leltárral szemben?
  • A dinamikus leltárak tökéletesen alkalmasak az emberi hibák csökkentésére, mivel az információkat szkriptek segítségével gyűjtik össze.
  • A leltárak kezelése minimális erőfeszítést igényel.

A saját, testre szabott dinamikus leltárt írhat az Ön által választott programozási nyelven. A leltárnak megfelelő opciók átadása esetén JSON formátumban kell visszaadnia.

Egy meglévő dinamikus leltár szkript felhasználása

A dinamikus leltár létrehozására használt szkriptet futtathatóvá kell tenni, hogy az Ansible használni tudja.

A dinamikus leltár szkriptben lévő hosztokról szóló információk lekérdezéséhez egyszerűen futtassa.

# ./script --list 

Amint arra korábban utaltunk, a kimenetnek az alábbi formátumú JSON-ban kell lennie.

A csoportokból álló szótár (i.pl. webszerverek, database_Servers)
  • A kezelt hosztok listája csoportonként
  • Változók szótára
Meta szótár
  • Hostok és hostvars
Mintakimenet
Következtetés

Ebben a cikkben bemutattuk, hogyan lehet statikus és dinamikus leltárt készíteni. Összefoglalva, a statikus leltárfájl egy egyszerű szöveges fájl, amely a kezelt hosztok vagy távoli csomópontok listáját tartalmazza, amelyek száma és IP-címe viszonylag állandó marad.

A dinamikus hosztfájl ezzel szemben folyamatosan változik, ahogy új hosztokat adunk hozzá vagy régi hosztokat vonunk ki. A hosztok IP-címei szintén dinamikusak, ahogy új hosztrendszereket állít le és indít el. Reméljük, hogy informatívnak találta ezt a bemutatót.