Statikus és dinamikus készletek használata az Ansible-ben – 4. rész
Az Ansible sorozat e 4. részében elmagyarázzuk, hogyan lehet statikus és dinamikus leltárt használni gazdagépcsoportok meghatározására az Ansible-ben.
Az Ansible esetén az Ansible vezérlőcsomópont által vezérelt felügyelt gazdagépek vagy szerverek egy host leltárfájlban vannak meghatározva, amint azt itt leírtuk. leltárfájl egy szöveges fájl, amely a felügyelt gazdagépek vagy távoli szerverek állomásneveiből vagy IP-címeiből áll.
A Felügyelt gazdagépek vagy egyéni bejegyzésként szerepelhetnek, vagy csoportnév alatt kategorizálhatók, amint azt később látni fogjuk. Az Ansible-ben kétféle leltárfájl létezik: statikus és dinamikus.
Nézzük meg mindegyiket, és nézzük meg, hogyan kezelhetjük őket. Mostanra feltételezzük, hogy már telepítette az Ansible-t a vezérlőcsomópontra, és beállította a jelszó nélküli SSH-kapcsolatot a felügyelt gazdagépekhez.
Statikus gazdagép-leltárfájl
Az Lehetséges beállításban a statikus leltárfájl egy egyszerű szöveges fájl, amely egy gazdagépcsoport alatt deklarált felügyelt gazdagépek listáját tartalmazza gazdagépnevek vagy IP-címek használatával.
A gazdagépcsoport neve szögletes zárójelben van, azaz [csoportnév]
. A kezelt gazdagép-bejegyzések később a csoport neve alatt jelennek meg, mindegyik saját sorában. Amint azt korábban tárgyaltuk, a gazdagépek listája gazdagépnevek vagy IP-címek használatával történik.
[group name]
Host A ip_address
Host B ip_address
Host c ip_address
Szemléltetés céljából létrehozunk egy statikus leltárfájlt.
mkdir test_lab && cd test_lab
vim hosts
[webservers]
173.82.115.165
[database_servers]
173.82.220.239
[datacenter:children]
webservers
database_servers
Mentse el a fájlt és lépjen ki.
Amint az a fenti leltárfájlban látható, 2 gazdagépcsoportot hoztunk létre: webszerverek és adatbázis-szerverek. Létrehoztunk egy további csoportot is adatközpont néven, amely a ': children'
utótaggal jelölt gazdagépcsoportokat tartalmazza, amint az fent látható.
Az Ansible azt is lehetővé teszi, hogy a gazdagépek csoportjait csoportnév alatt helyezzék el. A fenti leltárfájlban a webszerverek és az adatbázis-szerverek csoportok az adatközpont alá kerültek.
MEGJEGYZÉS: Nem kötelező kezelt gazdagépeket elhelyezni egy gazdagépcsoportban. Egyszerűen felsorolhatja őket például gazdagépnevük vagy IP-címük használatával.
173.82.202.239
172.82.115.165
load_balancer.pnl.com
Használjunk most néhány Ansible parancsot a gazdagép leltárfájlra való hivatkozáshoz. A készletkezelés alapvető szintaxisa a következő.
ansible {host-pattern} -i /path/of/inventory/file --list-hosts
Például,
ansible all -i /root/test_labs/hosts --list-hosts
Alternatív megoldásként használhatja a *
helyettesítő karaktert a 'all'
argumentum helyettesítésére.
ansible * -i /root/test_labs/hosts --list-hosts
A gazdagépek csoportba sorolásához adja meg a gazdagépcsoportot a host-pattern helyén.
ansible webservers -i /root/test_labs/hosts --list-hosts
Dinamikus gazdagép-leltárfájl
Egy konfigurációban – különösen az olyan felhőbeállításoknál, mint az AWS, ahol a leltárfájl folyamatosan változik a szerverek hozzáadása vagy leállítása során, a leltárfájlban meghatározott gazdagépek nyomon követése igazi kihívássá válik. Kényelmetlen lesz visszatérni a gazdagép fájlhoz, és frissíteni a gazdagépek listáját az IP-címükkel.
És itt jön képbe a dinamikus készlet. Tehát mi az a dinamikus készlet? A dinamikus leltár egy Python, PHP vagy bármely más programozási nyelven írt szkript. Jól használható felhőkörnyezetekben, például az AWS-ben, ahol az IP-címek megváltoznak, ha egy virtuális szervert leállítanak és újraindítják.
Az Ansible már kifejlesztett leltári szkripteket nyilvános felhőplatformokhoz, mint például a Google Compute Engine, az Amazon EC2 példány, az OpenStack, a RackSpace, a cobbler stb.
Milyen előnyei vannak a dinamikus leltárnak a statikus leltárral szemben?
- A dinamikus készletek tökéletes munkát végeznek az emberi hibák csökkentésében, mivel az információkat szkriptek segítségével gyűjtik össze.
- A készletek kezelése minimális erőfeszítést igényel.
Megírhatja saját testreszabott dinamikus leltárát az Ön által választott programozási nyelven. A megfelelő beállítások átadásakor a készletnek JSON-formátumot kell visszaadnia.
Használjon egy meglévő dinamikus készletszkriptet
A dinamikus leltár létrehozására használt szkriptet végrehajthatóvá kell tenni, hogy az Ansible használni tudja.
A dinamikus leltári szkripten belüli gazdagépekkel kapcsolatos információk lekéréséhez egyszerűen futtassa.
./script --list
Amint korábban jeleztük, a kimenetnek JSON-ban kell lennie az alábbi formátumban.
Csoportokat tartalmazó szótár (azaz webszerverek, adatbázis_szerverek)
- A felügyelt gazdagépek listája csoportonként
- Változószótár
Meta szótár
- Házigazdák és hostvarok
Minta kimenet
{
"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": {}
}
}
}
Következtetés
Ebben a cikkben bemutattuk, hogyan lehet statikus és dinamikus készleteket is létrehozni. Összefoglalva, a statikus leltárfájl egy egyszerű szöveges fájl, amely a felügyelt gazdagépek vagy távoli csomópontok listáját tartalmazza, amelyek száma és IP-címe meglehetősen állandó marad.
Másrészt a dinamikus gazdagépfájl folyamatosan változik, amikor új gazdagépeket ad hozzá, vagy megszünteti a régieket. A gazdagépek IP-címei is dinamikusak, amikor leállítja és elindítja az új gazdagépeket. Reméljük, hogy informatívnak találta ezt az oktatóanyagot.