Weboldal keresés

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.