Az IT környezetek egyre bonyolultabbá válnak. Ezekben a körülmények között elengedhetetlen, hogy az IT automatizálási rendszer naprakész információkkal rendelkezzen a hálózaton lévő csomópontokról, amelyeket kezelni kell. A Red Hat Ansible Automation Platform ezt a kérdést a úgynevezett inventory () – a kezelt csomópontok listái – segítségével oldja meg.

A legjobb esetben az inventory egy statikus fájl. Ez ideális megoldás, amikor elkezdi használni az Ansible-t, de ahogy bővül az automatizálás, ez már nem lesz elegendő.
És itt van, miért:
- Hogyan frissítheti és tarthatja naprakészen a kezelt csomópontok teljes listáját, amikor folyamatosan változik valami, amikor a munkaterhelések – és az azokat futtató csomópontok – időszakonként megjelennek vagy eltűnnek?
- Hogyan lehet osztályozni az IT infrastruktúra elemeit, hogy célzottan választhasson csomópontokat egy adott automatizálás alkalmazásához?
A fenti két kérdésre a válaszokat a dinamikus inventory () adja – egy szkript vagy bővítmény, amely a valódi forráshoz (source of truth) fordulva keres automatizálásra váró csomópontokat. Ezenfelül a dinamikus inventory automatikusan osztályozza a csomópontokat csoportokba, így pontosabban kiválaszthatja a célrendszereket az Ansible automatizálás végrehajtására.
lehetővé teszik az Ansible felhasználónak, hogy külső platformokhoz forduljon a célcsomópontok dinamikus kereséséhez, és ezeket a platformokat használja igazságforrásként az inventory létrehozásakor. Az Ansible standard inventory forrásai közé tartoznak az AWS EC2, Google GCP és Microsoft Azure felhőplatformok, és számos más inventory bővítmény is elérhető az Ansible számára.
Az Ansible Tower számos , amelyek közvetlenül „dobozból” működnek, és az említett felhőplatformok mellett integrációt biztosítanak a VMware vCenter, Red Hat OpenStack Platform és Red Hat Satellite számára. Ezekhez a bővítményekhez elegendő azonosítóadatokat biztosítani a célplatformhoz való csatlakozáshoz, és ezután az inventory adatok forrásaként használhatók az Ansible Towerben.
Az Ansible Tower szállítási csomagjában található alap bővítményeken kívül más inventory bővítmények is léteznek, amelyeket az Ansible közössége támogat. A által ezek a bővítmények a megfelelő gyűjteményekbe kerültek.
Ebben a bejegyzésben példaként megvizsgáljuk az Ansible inventori-plugin működését a ServiceNow-val, egy népszerű IT szolgáltatáskezelő platformmal, amelynek CMDB-jében az ügyfelek gyakran tárolják az összes eszközük adatait. Ezenkívül a CMDB hasznos automatizálási kontextust is tartalmazhat, például a szerverek tulajdonosairól, a szolgáltatási szintekről (production/non-production), a telepített frissítésekről és a karbantartási ablakokról szóló adatokat. Az Ansible inventori-plugin képes együttműködni a ServiceNow CMDB-val, és része a kollekciónak. a portálon .
Git-reposzitorium
Ahhoz, hogy az Ansible Tower-ben használni tudjuk a kollekcióból származó inventori-plugin-t, projektforrásként kell megadnunk. Az Ansible Tower-ben a projekt egy integráció egy verziókezelő rendszerrel, például egy git tárolóval, amelyet nemcsak az automatizálási playbookok, hanem a változók és az inventori listák szinkronizálására is használhatunk.
A mi tárolónk valójában nagyon egyszerű:
├── collections
│ └── requirements.yml
└── servicenow.yml
A servicenow.yml fájl tartalmazza az inventori plugin részleteit. A mi esetünkben egyszerűen megadjuk a ServiceNow CMDB-ben használt táblát. Továbbá megadjuk azokat a mezőket, melyek csomópontváltozókként kerülnek hozzáadásra, valamint a létrehozni kívánt csoportokról szóló információkat.
$ cat servicenow.yml
plugin: servicenow.servicenow.now
table: cmdb_ci_linux_server
fields: [ip_address,fqdn,host_name,sys_class_name,name,os]
keyed_groups:
- key: sn_sys_class_name | lower
prefix: ''
separator: ''
- key: sn_os | lower
prefix: ''
separator: ''
Vegye észre, hogy itt nem kerül megadásra a ServiceNow példány, amelyhez csatlakozni fogunk, és semmilyen hitelesítési adat sem kerül beállításra. Mindezt később az Ansible Tower-ben fogjuk konfigurálni.
szükséges ahhoz, hogy az Ansible Tower letölthesse a szükséges kollekciót, ezzel megkapva a szükséges inventori-plugin-t. Ellenkező esetben kézzel kellett volna telepítenünk és karbantartanunk ezt a kollekciót az összes Ansible Tower csomópontunkon.
$ cat collections/requirements.yml
---
collections:
- name: servicenow.servicenow
Miután elküldtük ezt a konfigurációt a verziókezelő rendszerbe, az Ansible Tower-ben létrehozhatunk egy projektet, amely a megfelelő tárolóra hivatkozik. Az alábbi példában az Ansible Tower összekapcsolódik a GitHub-on található tárolónkkal. Figyeld meg a SCM URL-t: ez lehetővé teszi a fiók beállítását a privát tárolóhoz való csatlakozáshoz, valamint adott ág, címke vagy commit meghatározását a letöltéshez.

Hozzunk létre credentials-t a ServiceNow-hoz
Ahogy már említettük, a tárolónkban található konfiguráció nem tartalmazza a ServiceNow-hoz való csatlakozáshoz szükséges hitelesítő adatokat, és nem határozza meg azt az instanciát, amellyel kapcsolatba lépünk. Ezért a szükséges adatokat a következő lépésekben az Ansible Tower-ben hozzuk létre. Az , számos környezeti változó áll rendelkezésünkre, amelyeket használunk a csatlakozási paraméterek megadására, például így:
= username
A ServiceNow felhasználói fiók, amelynek jogai vannak a cmdb_ci_server (alapértelmezett) olvasására, vagy a SN_TABLE által meghatározott tábláéra.
set_via:
env:
- name: SN_USERNAME
Ebben az esetben, ha a SN_USERNAME környezeti változó meg van határozva, akkor az inventory plugin ezt fogja használni a ServiceNow-hoz való csatlakozáshoz.
Továbbá meg kell határoznunk az SN_INSTANCE és SN_PASSWORD változókat is.
Az Ansible Tower-ben azonban nincs ilyen típusú credentials, ahol megadhatnánk ezeket az adatokat a ServiceNow-hoz. Az Ansible Tower viszont lehetővé teszi számunkra, hogy , erről bővebben olvashatsz a cikkben .
Ebben az esetben a ServiceNow-hoz készült egyedi credentials bemeneti konfigurációja a következőképpen néz ki:
fields:
- id: SN_USERNAME
type: string
label: Felhasználónév
- id: SN_PASSWORD
type: string
label: Jelszó
secret: true
- id: SN_INSTANCE
type: string
label: Snow Instance
required:
- SN_USERNAME
- SN_PASSWORD
- SN_INSTANCE
Ezek a credentials környezeti változók formájában lesznek kitenni ugyanazzal a névvel. Ezt a injector konfigurációjában írják le:
env:
SN_INSTANCE: '{{ SN_INSTANCE }}'
SN_PASSWORD: '{{ SN_PASSWORD }}'
SN_USERNAME: '{{ SN_USERNAME }}'
Tehát, meghatároztuk a szükséges credential típust, most hozzáadhatjuk a ServiceNow fiókot, és beállíthatjuk az instanciát, a felhasználónevet és a jelszót, ahogyan az alábbiakban látható:

Hozzunk létre egy inventort
Tehát most, hogy mindennel készen állunk, létrehozhatunk egy inventort az Ansible Tower-ben. Hívjuk őt ServiceNow-nak:

Az inventory létrehozása után csatlakoztathatjuk hozzá az adatforrást. Itt megadjuk a korábban létrehozott projektet, és beírjuk a YAML inventory-fájlt a verziókezelő rendszerünk tárolójában, ebben az esetben a servicenow.yml fájlt a projekt gyökerében. Továbbá, a ServiceNow fiókhoz is csatlakoztatni kell.

Annál, hogy ellenőrizzük, hogyan működik minden, próbáljuk megszinkronizálni az adatforrással, a "Sync all" gombra kattintva. Ha minden megfelelően van beállítva, az elemeknek be kell importálódniuk az inventory-ba:

Vegyük észre, hogy a szükséges csoportok is létrejöttek.
Zárás
Ebben a bejegyzésben azt vizsgáltuk, hogyan használhatók az Ansible Tower inventory pluginek a gyűjteményekből, például a ServiceNow plugin esetében. Biztonságosan megadtuk a hitelesítő adatokat a ServiceNow instanciánkhoz való csatlakozáshoz is. Az inventory plugin projekthez való csatlakoztatása nemcsak harmadik féltől származó vagy testreszabott pluginekkel működik, hanem kifejezetten alkalmazható bizonyos beépített inventory-k működésének módosítására is. Ennek köszönhetően az Ansible Automation Platform könnyen és zökkenőmentesen integrálódik a meglévő eszközökkel az IT-környezetek automatizálásakor, amelyek egyre bonyolultabbá válnak.
További információt a bejegyzésben tárgyalt témákról, valamint az Ansible alkalmazásának más aspektusairól itt találhat:
- Blog az .
- .
- A Red Hat támogatott gyűjteményeinek listája az Automation Hub-on ().
- .
*A Red Hat nem garantálja a itt bemutatott kód helyességét. Minden anyag támogatás nélküli, hacsak másként nincs nyilatkozva kifejezetten.
Forrás: habr.com
