Použití inventářových pluginů z Ansible Content Collections v Ansible Tower

IT prostředí se stávají stále složitějšími. V těchto podmínkách je pro systém IT automatizace kriticky důležité mít aktuální informace o uzlech, které jsou v síti a podléhají zpracování. V Red Hat Ansible Automation Platform se tento problém řeší prostřednictvím tzv. inventářů (inventář) – seznamů spravovaných uzlů.

Použití inventářových pluginů z Ansible Content Collections v Ansible Tower

V své nejjednodušší formě inventář představuje statický soubor. To je ideální volba, když začínáte pracovat s Ansible, ale jak se automatizace rozšiřuje, stává se to nedostatečným.

A tady je důvod:

  1. Jak aktualizovat a udržovat kompletní seznam kontrolovaných uzlů, když se něco neustále mění, když pracovní zatížení – a tím i uzly, na kterých jsou prováděna – občas vznikají a občas mizí?
  2. Jak klasifikovat komponenty IT infrastruktury, abyste mohli cíleně vybírat uzly pro aplikaci určité automatizace?

Odpovědi na oba tyto dotazy dává dynamický inventář (dynamic inventory) – skript nebo plugin, který hledá uzly podléhající automatizaci, s odkazem na zdroj pravdy (source of truth). Navíc dynamický inventář automaticky klasifikuje uzly do skupin, aby bylo možné přesněji vybírat cílové systémy pro provádění určité automatizace Ansible.

Inventářové pluginy dávají uživateli Ansible možnost přistupovat k externím platformám pro dynamické vyhledávání cílových uzlů a používat tyto platformy jako zdroj pravdy při vytváření inventáře. Standardní seznam zdrojů v Ansible zahrnuje cloudové platformy AWS EC2, Google GCP a Microsoft Azure, dále existuje mnoho dalších inventářových pluginů pro Ansible.

Ansible Tower přichází s řadou inventářových pluginů, které fungují přímo „z krabice“ a kromě výše uvedených cloudových platforem zajišťují integraci s VMware vCenter, Red Hat OpenStack Platform a Red Hat Satellite. Pro tyto pluginy stačí poskytnout přihlašovací údaje pro připojení k cílové platformě, po čemž je lze použít jako zdroj inventářových dat v Ansible Tower.

Kromě standardních pluginů dodávaných s Ansible Tower existují také další inventářové pluginy, které podporují komunity Ansible. S přechodem na Red Hat Ansible Content Collections se tyto pluginy začaly zahrnovat do odpovídajících kolekcí.

V tomto příspěvku si jako příklad ukážeme práci s inventářovým pluginem pro ServiceNow, populární platformu pro správu IT služeb, v jejímž CMDB zákazníci často uchovávají informace o všech svých zařízení. CMDB může také obsahovat užitečný kontext pro automatizaci, například informace o vlastnících serverů, úrovních služeb (production/non-production), nainstalovaných aktualizacích a technických oknech údržby. Inventářový plugin Ansible umí pracovat s CMDB ServiceNow a je součástí sbírky. servicenow na portálu galaxy.ansible.com.

Git repozitáře

Aby bylo možné použít inventářový plugin ze sbírky v Ansible Tower, je třeba ho specifikovat jako zdroj projektu. V Ansible Tower je projekt integrací s nějakým systémem správy verzí, například git repozitářem, který lze použít k synchronizaci nejen automatizačních playbooků, ale také proměnných a seznamů inventáře.

Náš repozitář je ve skutečnosti velmi jednoduchý:

├── collections
│   └── requirements.yml
└── servicenow.yml

Soubor servicenow.yml obsahuje podrobnosti pro inventářový plugin. V našem případě jednoduše specifikujeme tabulku v CMDB ServiceNow, kterou chceme použít. Také nastavujeme pole, která budou přidána jako proměnné uzlu, plus určité informace o skupinách, které chceme vytvořit.

$ 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: ''

Všimněte si, že zde není specifikován žádný konkrétní instancí ServiceNow, ke kterému se připojíme, a nejsou zde žádné přihlašovací údaje pro připojení. To vše později nastavíme v Ansible Tower.

Soubor collections/requirements.yml je potřeba, aby Ansible Tower mohl stáhnout potřebnou sbírku a tím získat potřebný inventářový plugin. Jinak bychom museli tuto sbírku manuálně instalovat a udržovat na všech našich uzlech Ansible Tower.

$ cat collections/requirements.yml
---
collections:

- name: servicenow.servicenow

Po odeslání této konfigurace do systému správy verzí lze v Ansible Tower vytvořit projekt, který odkazuje na odpovídající repozitář. V následujícím příkladu se Ansible Tower propojuje s naším repozitářem na githubu. Všimněte si SCM URL: umožňuje specifikovat účet pro připojení k soukromému repozitáři, a také zadat konkrétní větev, značku nebo commit pro stažení.

Použití inventářových pluginů z Ansible Content Collections v Ansible Tower

Vytváříme credentials pro ServiceNow

Jak již bylo zmíněno, konfigurace v našem repozitáři neobsahuje údaje pro připojení k ServiceNow a nespecifikuje instanci ServiceNow, se kterou budeme komunikovat. Proto aby bylo možné tyto údaje zadat, vytvoříme credentials v Ansible Tower. Podle dokumentace inventářového pluginu ServiceNow, existuje řada proměnných prostředí, pomocí kterých nastavíme parametry připojení, například takto:

= username
    	Uživatelský účet ServiceNow, měl by mít práva číst cmdb_ci_server (ve výchozím nastavení), nebo tabulku specifikovanou SN_TABLE

    	set_via:
      	env:
      	- name: SN_USERNAME

V tomto případě, pokud je proměnná prostředí SN_USERNAME nastavena, bude inventářový plugin používat tuto hodnotu jako účet pro připojení k ServiceNow.

Také musíme zadat proměnné SN_INSTANCE a SN_PASSWORD.

Nicméně v Ansible Tower nejsou credentials tohoto typu, kde by bylo možné tyto údaje pro ServiceNow specifikovat. Ansible Tower nám však umožňuje definovat vlastní typy credentials, o čemž se můžete dozvědět více v článku „Ansible Tower Feature Spotlight: Custom Credentials“.

V našem případě vstupní konfigurace pro vlastní credentials pro ServiceNow vypadá následovně:

fields:
  - id: SN_USERNAME
	type: string
	label: Uživatelské jméno
  - id: SN_PASSWORD
	type: string
	label: Heslo
	secret: true
  - id: SN_INSTANCE
	type: string
	label: Instance Snow
required:
  - SN_USERNAME
  - SN_PASSWORD
  - SN_INSTANCE

Tyto credentials budou exponovány jako proměnné prostředí se stejným názvem. To je popsáno v konfiguraci injektoru:

env:
  SN_INSTANCE: '{{ SN_INSTANCE }}'
  SN_PASSWORD: '{{ SN_PASSWORD }}'
  SN_USERNAME: '{{ SN_USERNAME }}'

Takže jsme definovali potřebný typ credential, nyní můžeme přidat účet ServiceNow a zadat instanci, uživatelské jméno a heslo, takto:

Použití inventářových pluginů z Ansible Content Collections v Ansible Tower

Vytváříme inventář

Takže nyní máme vše připraveno pro vytvoření inventáře v Ansible Tower. Pojmenujeme ho ServiceNow:

Použití inventářových pluginů z Ansible Content Collections v Ansible Tower

Po vytvoření inventáře můžeme přiřadit datový zdroj. Zde uvedeme projekt, který jsme vytvořili dříve, a zadáme cestu k našemu inventářovému YAML souboru v repozitáři systému správy verzí, v našem případě je to servicenow.yml v kořenovém adresáři projektu. Kromě toho je potřeba přiřadit také účet ServiceNow.

Použití inventářových pluginů z Ansible Content Collections v Ansible Tower

Abychom zkontrolovali, jak vše funguje, pokusíme se synchronizovat se zdrojem dat stisknutím tlačítka „Synchronizovat vše“. Pokud je vše správně nastaveno, měly by se uzly importovat do našeho inventáře:

Použití inventářových pluginů z Ansible Content Collections v Ansible Tower

Všimněte si, že potřebné skupiny se také vytvořily.

Závěr

V tomto příspěvku jsme se podívali na to, jak používat inventářové pluginy z kolekcí v Ansible Tower na příkladu pluginu ServiceNow. Také jsme bezpečně zadali přihlašovací údaje pro připojení k našemu instanci ServiceNow. Přiřazení inventářového pluginu z projektu funguje nejen se třetími stranami nebo přizpůsobenými pluginy, ale může být použito také pro modifikaci práce některých standardních inventářů. Díky tomu se Ansible Automation Platform snadno a bezproblémově integruje s existujícími nástroji při automatizaci IT prostředí, která se stávají stále složitějšími.

Další informace k tématům projednávaným v tomto příspěvku, jakož i k dalším aspektům použití Ansible, najdete zde:

*Red Hat neposkytuje žádné záruky o správnosti zde uvedeného kódu. Všechny materiály jsou poskytovány bez záruky podpory, pokud není výslovně uvedeno jinak.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster