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

Mediile IT devin din ce în ce mai complexe. În aceste condiții, pentru un sistem de automatizare IT este critic să avem informații actualizate despre nodurile care sunt prezente în rețea și care necesită procesare. În Red Hat Ansible Automation Platform, această problemă este abordată prin așa-numitele inventory (inventory) – liste cu noduri gestionate.

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

În forma sa cea mai simplă, inventory-ul este un fișier static. Acesta este un variantă ideală atunci când începeți să lucrați cu Ansible, dar pe măsură ce automatizarea se extinde, aceasta devine insuficientă.

Iată de ce:

  1. Cum să actualizăm și să menținem o listă completă de noduri controlate în stare actuală, atunci când ceva se schimbă constant, când sarcinile de muncă – și, odată cu ele, nodurile pe care sunt executate – apar și dispar?
  2. Cum să clasificăm componentele infrastructurii IT pentru a selecta cu precizie nodurile pentru aplicarea unei automatizări specifice?

Răspunsurile la ambele întrebări sunt oferite de un dynamic inventory (dynamic inventory) – un script sau un plugin care caută nodurile supuse automatizării, apelând la sursa de adevăr (source of truth). În plus, dynamic inventory clasifică automat nodurile în grupuri, astfel încât să puteți selecta mai precis sistemele țintă pentru a efectua o anumită automatizare Ansible.

Pluginurile inventory oferă utilizatorului Ansible posibilitatea de a accesa platforme externe pentru căutarea dinamică a nodurilor țintă și de a utiliza aceste platforme ca sursă de adevăr în formarea inventory-ului. Lista standard a surselor în Ansible include platformele cloud AWS EC2, Google GCP și Microsoft Azure, de asemenea, pentru Ansible există și multe alte pluginuri de inventory.

Ansible Tower vine împreună cu o serie de pluginuri de inventory, care funcționează direct „din cutie” și, pe lângă platformele cloud enumerate mai sus, asigură integrarea cu VMware vCenter, Red Hat OpenStack Platform și Red Hat Satellite. Pentru aceste pluginuri, este suficient să furnizați acreditivele pentru a vă conecta la platforma țintă, după care acestea pot fi utilizate ca sursă de date de inventory în Ansible Tower.

Pe lângă pluginurile standard incluse în Ansible Tower, există și alte pluginuri de inventory, susținute 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 analiza, ca exemplu, utilizarea pluginului de inventar pentru ServiceNow, o platformă populară de gestionare a serviciilor IT, în care clienții adesea stochează informații despre toate dispozitivele lor în CMDB. În plus, CMDB poate conține contexte utile pentru automatizare, cum ar fi informații despre proprietarii serverelor, nivelurile de servicii (production/non-production), actualizările instalate și feroneriile de întreținere. Pluginul de inventar Ansible poate lucra cu CMDB-ul ServiceNow și face parte din colecția servicenow pe portal galaxy.ansible.com.

repozitoriul Git

Pentru a utiliza pluginul de inventar din colecție în Ansible Tower, trebuie să-l specificați ca sursă a proiectului. În Ansible Tower, un proiect este o integrare cu un sistem de gestionare a versiunilor, cum ar fi un repository git, care poate fi folosit pentru a sincroniza nu doar playbook-urile de automatizare, ci și variabilele și listele de inventar.

Repository-ul nostru este de fapt foarte simplu:

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

Fișierul servicenow.yml conține detalii pentru pluginul de inventar. În cazul nostru, specificăm pur și simplu tabelul din CMDB ServiceNow pe care dorim să-l utilizăm. De asemenea, stabilim câmpurile care vor fi adăugate ca variabile de nod, plus informații specifice 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: ''

Rețineți că aici nu se specifică deloc instanța ServiceNow la care ne vom conecta și nu se stabilește nicio acreditivă pentru conectare. Toate acestea vor fi configurate ulterior în Ansible Tower.

Fișierul collections/requirements.yml este necesar pentru ca Ansible Tower să poată descărca colecția necesară și astfel să obțină pluginul de inventar dorit. Altfel, ar trebui să instalăm și să întreținem manual această colecție pe toate nodurile noastre Ansible Tower.

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

- name: servicenow.servicenow

După ce am trimis această configurație în sistemul de control al versiunilor, în Ansible Tower putem crea un proiect referitor la repository-ul corespunzător. În exemplul de mai jos, Ansible Tower se leagă de repository-ul nostru de pe github. Observați SCM URL: acesta permite specificarea contului pentru conectarea la un repository privat, dar și stabilirea unei ramuri, etichete sau comit pentru extragere.

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

Creăm credentials pentru ServiceNow

Așa cum s-a menționat, configurația din repository-ul nostru nu conține credentiale pentru conectarea la ServiceNow și nu specifică instanța ServiceNow cu care vom interacționa. Prin urmare, pentru a stabili aceste date, vom crea credentiale în Ansible Tower. Conform documentației plugin-ului de inventar ServiceNow, există o serie de variabile de mediu, cu ajutorul cărora vom stabili parametrii de conectare, de exemplu:

= username
    	Contul utilizatorului ServiceNow, ar trebui să aibă drepturi de citire cmdb_ci_server (implicit), sau tabelul specificat de SN_TABLE

    	set_via:
      	env:
      	- name: SN_USERNAME

În acest caz, dacă variabila de mediu SN_USERNAME este setată, plugin-ul de inventar va folosi aceasta ca și cont pentru conectarea la ServiceNow.

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

Cu toate acestea, în Ansible Tower nu există credentiale de acest tip, unde am putea specifica aceste date pentru ServiceNow. Totuși, Ansible Tower ne permite să definim tipuri personalizate de credentiale, mai multe detalii pot fi găsite în articolul „Ansible Tower Feature Spotlight: Custom Credentials”.

În cazul nostru, configurația de input pentru credentialele personalizate pentru ServiceNow arată astfel:

fields:
  - id: SN_USERNAME
	type: string
	label: Nume utilizator
  - id: SN_PASSWORD
	type: string
	label: Parolă
	secret: true
  - id: SN_INSTANCE
	type: string
	label: Instanță Snow
required:
  - SN_USERNAME
  - SN_PASSWORD
  - SN_INSTANCE

Aceste credentiale 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 credential necesar, acum putem adăuga contul ServiceNow și stabili instanța, numele utilizatorului și parola, astfel:

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

Creăm un inventar

Deci, acum avem totul pregătit pentru a crea un inventar în Ansible Tower. Să-l numim ServiceNow:

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

După crearea inventarului, putem atașa o sursă de date la acesta. Aici specificăm proiectul pe care l-am creat anterior și introducem calea către fișierul nostru de inventar YAML în repositoarele sistemului de gestionare a versiunilor, în cazul nostru servicenow.yml în rădăcina proiectului. De asemenea, trebuie să asociem și un cont ServiceNow.

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

Pentru a verifica dacă totul funcționează, încercăm să ne sincronizăm cu sursa de date, apăsând butonul „Sync all”. Dacă totul este configurat corect, nodurile ar trebui să fie importate în inventar:

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

Rețineți că grupurile necesare pentru noi au fost de asemenea create.

Concluzie

În această postare, am discutat despre cum să folosim pluginurile de inventar din colecții în Ansible Tower, exemplificând cu pluginul ServiceNow. De asemenea, am scris în siguranță acreditivele pentru a ne conecta la instanța noastră ServiceNow. Asocierea pluginului de inventar din proiect funcționează nu doar cu pluginuri terțe sau personalizate, ci poate fi aplicată și pentru a modifica funcționarea unor pluginuri de inventar standard. Din acest motiv, Ansible Automation Platform se integrează ușor și fără probleme cu instrumentele existente în automatizarea mediilor IT, care devin din ce în ce mai complexe.

Pentru a găsi informații suplimentare despre temele discutate în această postare, precum și despre alte aspecte referitoare la utilizarea Ansible, puteți consulta aici:

*Red Hat nu oferă nicio garanție privind corectitudinea codului prezentat aici. Toate materialele sunt furnizate fără suport, cu excepția cazului în care este specificat altceva explicit.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster