Inventori pluginok használata az Ansible Content Collections-ban az Ansible Tower-en.

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 (inventory) – a kezelt csomópontok listái – segítségével oldja meg.

Inventori pluginok használata az Ansible Content Collections-ban az Ansible Tower-en.

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:

  1. 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?
  2. 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 (dynamic 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.

Az inventory bővítmények 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 inventory bővítménnyel, 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 Red Hat Ansible Content Collections á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. servicenow a portálon galaxy.ansible.com.

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.

A collections/requirements.yml fájl 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.

Inventori pluginok használata az Ansible Content Collections-ban az Ansible Tower-en.

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 ServiceNow inventory plugin dokumentációja, 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 egyedi típusú credentials-t határozzunk meg, erről bővebben olvashatsz a cikkben «Ansible Tower Feature Spotlight: Custom Credentials».

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ó:

Inventori pluginok használata az Ansible Content Collections-ban az Ansible Tower-en.

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:

Inventori pluginok használata az Ansible Content Collections-ban az Ansible Tower-en.

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.

Inventori pluginok használata az Ansible Content Collections-ban az Ansible Tower-en.

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:

Inventori pluginok használata az Ansible Content Collections-ban az Ansible Tower-en.

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:

*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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster