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
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
Alternatívaként használhatjuk a *
joker karaktert a 'all'
argumentum helyett.
$ ansible * -i /root/test_labs/hosts --list-hosts
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
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.