Utilizarea pluginurilor de inventar din Ansible Content Collections în Ansible Tower

Mediile IT devin din ce în ce mai complexe. În aceste condiții, este esențial ca sistemul de automatizare IT să aibă informații actualizate despre nodurile care sunt prezente în rețea și care sunt supuse procesării. În platforma Red Hat Ansible Automation, această problemă este rezolvată prin așa-numitul inventar (inventar) – liste de noduri gestionate.

Utilizarea pluginurilor de inventar din Ansible Content Collections în Ansible Tower

În forma sa cea mai simplă, inventarul este un fișier static. Acest lucru este ideal atunci când începeți să lucrați cu Ansible, dar pe măsură ce automatizarea crește, aceasta devine insuficientă.

Iată de ce:

  1. Cum actualizați și mențineți o listă completă de noduri monitorizate atunci când lucrurile se schimbă în mod constant, când sarcinile de lucru – și ulterior nodurile pe care rulează – vin și pleacă?
  2. Cum se clasifică componentele infrastructurii IT pentru a selecta în mod specific nodurile pentru aplicarea unei anumite automatizări?

Inventarul dinamic oferă răspunsuri la ambele întrebări (inventar dinamic) – un script sau plugin care caută noduri pentru a fi automatizate, referindu-se la sursa adevărului. În plus, inventarul dinamic clasifică automat nodurile în grupuri, astfel încât să puteți selecta cu mai multă acuratețe sistemele țintă pentru a efectua automatizări specifice Ansible.

Pluginuri de inventar oferiți utilizatorului Ansible posibilitatea de a accesa platforme externe pentru a căuta în mod dinamic nodurile țintă și pentru a folosi aceste platforme ca sursă de adevăr atunci când creează un inventar. Lista standard de surse din Ansible include platformele cloud AWS EC2, Google GCP și Microsoft Azure și există și multe alte plugin-uri de inventar pentru Ansible.

Ansible Tower vine cu un număr de pluginuri de inventar, care funcționează imediat și, pe lângă platformele cloud enumerate mai sus, oferă integrare cu VMware vCenter, Red Hat OpenStack Platform și Red Hat Satellite. Pentru aceste plugin-uri, trebuie doar să furnizați acreditări pentru a vă conecta la platforma țintă, după care pot fi folosite ca sursă de date de inventar în Ansible Tower.

Pe lângă pluginurile standard incluse în Ansible Tower, există și alte pluginuri de inventar acceptate de comunitatea Ansible. Odată cu trecerea la Red Hat Ansible Content Collections aceste pluginuri au început să fie incluse în colecțiile corespunzătoare.

În această postare, vom lua un exemplu de lucru cu pluginul de inventar pentru ServiceNow, o platformă populară de gestionare a serviciilor IT în care clienții stochează adesea informații despre toate dispozitivele lor în CMDB. În plus, CMDB poate conține context care este util pentru automatizare, cum ar fi informații despre proprietarii de servere, niveluri de servicii (producție/non-producție), actualizări instalate și ferestre de întreținere. Pluginul de inventar Ansible poate funcționa cu ServiceNow CMDB și face parte din colecție servicenow pe portal galaxy.ansible.com.

Depozitul Git

Pentru a utiliza un plugin de inventar dintr-o colecție din Ansible Tower, acesta trebuie setat ca sursă a proiectului. În Ansible Tower, un proiect este o integrare cu un fel de sistem de control al versiunilor, cum ar fi un depozit git, care poate fi folosit pentru a sincroniza nu numai manualele de automatizare, ci și variabilele și listele de inventar.

Depozitul nostru este de fapt foarte simplu:

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

Fișierul servicenow.yml conține detalii pentru inventarul de pluginuri. În cazul nostru, pur și simplu specificăm tabelul din ServiceNow CMDB pe care dorim să-l folosim. De asemenea, setăm câmpurile care vor fi adăugate ca variabile de nod, plus anumite informații despre grupurile pe care dorim să le creăm.

$ 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ă rugăm să rețineți că aceasta nu specifică instanța ServiceNow la care ne vom conecta în niciun fel și nu specifică nicio acreditări pentru conectare. Toate acestea le vom configura mai târziu în Ansible Tower.

Colecții de fișiere/requirements.yml necesare pentru ca Ansible Tower să poată descărca colecția necesară și, prin urmare, să obțină pluginul de inventar necesar. În caz contrar, ar trebui să instalăm și să menținem manual această colecție pe toate nodurile noastre Ansible Tower.

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

- name: servicenow.servicenow

Odată ce am împins această configurație la controlul versiunilor, putem crea un proiect în Ansible Tower care face referire la depozitul corespunzător. Exemplul de mai jos leagă Ansible Tower la depozitul nostru github. Acordați atenție adresei URL SCM: vă permite să înregistrați un cont pentru a vă conecta la un depozit privat, precum și să specificați o anumită ramură, etichetă sau angajare pentru a verifica.

Utilizarea pluginurilor de inventar din Ansible Content Collections în Ansible Tower

Crearea acreditărilor pentru ServiceNow

După cum am menționat, configurația din depozitul nostru nu conține acreditări pentru a vă conecta la ServiceNow și nu specifică instanța ServiceNow cu care vom comunica. Prin urmare, pentru a seta aceste date, vom crea acreditări în Ansible Tower. Conform Documentația pluginului de inventar ServiceNow, există o serie de variabile de mediu cu care vom seta parametrii de conexiune, de exemplu, astfel:

= username
    	The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by SN_TABLE

    	set_via:
      	env:
      	- name: SN_USERNAME

În acest caz, dacă variabila de mediu SN_USERNAME este setată, pluginul de inventar o va folosi ca cont pentru a se conecta la ServiceNow.

De asemenea, trebuie să setăm variabilele SN_INSTANCE și SN_PASSWORD.

Cu toate acestea, nu există acreditări de acest tip în Ansible Tower unde puteți specifica aceste date pentru ServiceNow. Dar Ansible Tower ne permite să definim tipuri de acreditări personalizate, puteți citi mai multe despre asta în articol „Ansible Tower Feature Spotlight: Acreditări personalizate”.

În cazul nostru, configurația de intrare pentru acreditările personalizate pentru ServiceNow arată astfel:

fields:
  - id: SN_USERNAME
	type: string
	label: Username
  - id: SN_PASSWORD
	type: string
	label: Password
	secret: true
  - id: SN_INSTANCE
	type: string
	label: Snow Instance
required:
  - SN_USERNAME
  - SN_PASSWORD
  - SN_INSTANCE

Aceste acreditări vor fi expuse ca variabile de mediu cu același nume. Acest lucru este descris în configurația injectorului:

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

Deci, am definit tipul de autentificare de care avem nevoie, acum putem adăuga un cont ServiceNow și putem seta instanța, numele de utilizator și parola, astfel:

Utilizarea pluginurilor de inventar din Ansible Content Collections în Ansible Tower

Cream inventar

Deci, acum suntem cu toții pregătiți să creăm un inventar în Ansible Tower. Să-i spunem ServiceNow:

Utilizarea pluginurilor de inventar din Ansible Content Collections în Ansible Tower

După crearea inventarului, îi putem atașa o sursă de date. Aici specificăm proiectul pe care l-am creat mai devreme și introducem calea către fișierul nostru de inventar YAML în depozitul de control sursă, în cazul nostru este servicenow.yml în rădăcina proiectului. În plus, trebuie să vă conectați contul ServiceNow.

Utilizarea pluginurilor de inventar din Ansible Content Collections în Ansible Tower

Pentru a verifica cum funcționează totul, să încercăm să ne sincronizăm cu sursa de date făcând clic pe butonul „Sincronizează tot”. Dacă totul este configurat corect, atunci nodurile ar trebui importate în inventarul nostru:

Utilizarea pluginurilor de inventar din Ansible Content Collections în Ansible Tower

Vă rugăm să rețineți că au fost create și grupurile de care avem nevoie.

Concluzie

În această postare, ne-am uitat la modul de utilizare a pluginurilor de inventar din colecții din Ansible Tower folosind pluginul ServiceNow ca exemplu. De asemenea, am înregistrat acreditări în siguranță pentru a ne conecta la instanța noastră ServiceNow. Conectarea unui plugin de inventar dintr-un proiect funcționează nu numai cu pluginuri terțe sau personalizate, ci poate fi folosită și pentru a modifica funcționarea unor inventare standard. Acest lucru face ca Ansible Automation Platform să fie ușor și perfect de integrat cu instrumentele existente atunci când automatizează medii IT din ce în ce mai complexe.

Puteți găsi mai multe informații despre subiectele discutate în această postare, precum și alte aspecte ale utilizării Ansible, aici:

*Red Hat nu oferă garanții că codul conținut aici este corect. Toate materialele sunt furnizate fără aprobare, cu excepția cazului în care se specifică altfel în mod expres.

Sursa: www.habr.com

Adauga un comentariu