Utilizzo dei plugin di inventory delle Ansible Content Collections in Ansible Tower

Gli ambienti IT stanno diventando sempre più complessi. In queste condizioni, è fondamentale per un sistema di automazione IT avere informazioni aggiornate sui nodi presenti nella rete e da gestire. In Red Hat Ansible Automation Platform, questo problema viene affrontato attraverso i cosiddetti inventari (inventory) – elenchi di nodi gestiti.

Utilizzo dei plugin di inventory delle Ansible Content Collections in Ansible Tower

Nella sua forma più semplice, un inventario è un file statico. Questa è l'opzione ideale quando si inizia a lavorare con Ansible, ma man mano che l'automazione si espande, diventa insufficiente.

Ecco perché:

  1. Come aggiornare e mantenere un elenco completo dei nodi controllati quando ci sono continui cambiamenti, quando i carichi di lavoro – e con essi i nodi su cui vengono eseguiti – compaiono e scompaiono?
  2. Come classificare i componenti dell'infrastruttura IT per selezionare in modo mirato i nodi a cui applicare una determinata automazione?

Le risposte a entrambe queste domande vengono fornite da un inventario dinamico (dynamic inventory) – uno script o un plugin che cerca nodi da automatizzare accedendo a una fonte di verità. Inoltre, l'inventario dinamico classifica automaticamente i nodi in gruppi, permettendovi di selezionare in modo più preciso i sistemi target per effettuare l'automazione Ansible.

Plugin di inventario offrono all'utente Ansible la possibilità di accedere a piattaforme esterne per la ricerca dinamica di nodi target e utilizzare queste piattaforme come fonte di verità nella creazione dell'inventario. La lista standard delle fonti in Ansible include piattaforme cloud come AWS EC2, Google GCP e Microsoft Azure, e ci sono anche molti altri plugin di inventario per Ansible.

Ansible Tower viene fornito con diversi plugin di inventario, che funzionano direttamente «out of the box» e, oltre alle piattaforme cloud sopracitate, garantiscono integrazione con VMware vCenter, Red Hat OpenStack Platform e Red Hat Satellite. Per questi plugin è sufficiente fornire le credenziali per connettersi alla piattaforma target, dopo di che possono essere utilizzati come fonte di dati da inventario in Ansible Tower.

Oltre ai plugin standard forniti con Ansible Tower, ci sono altri plugin per inventory supportati dalla community di Ansible. Con il passaggio a Red Hat Ansible Content Collections questi plugin sono stati inclusi nelle rispettive collezioni.

In questo post, esamineremo, per esempio, il funzionamento di un plugin per inventory per ServiceNow, una piattaforma popolare per la gestione dei servizi IT, nella cui CMDB i clienti spesso archiviano informazioni su tutti i loro dispositivi. Inoltre, la CMDB può contenere contesti utili per l'automazione, come informazioni sui proprietari dei server, i livelli di servizio (production/non-production), gli aggiornamenti installati e le finestre di manutenzione. Il plugin di inventory di Ansible può lavorare con la CMDB di ServiceNow ed è parte della collezione servicenow sul portale galaxy.ansible.com.

repository Git

Per utilizzare il plugin di inventory della collezione in Ansible Tower, è necessario specificarlo come fonte del progetto. In Ansible Tower, un progetto è un'integrazione con un sistema di gestione delle versioni, come un repository git, che può essere utilizzata per sincronizzare non solo i playbook di automazione, ma anche le variabili e le liste di inventory.

Il nostro repository è in realtà molto semplice:

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

Il file servicenow.yml contiene dettagli per il plugin di inventario. In questo caso, specifichiamo semplicemente la tabella nella CMDB di ServiceNow che vogliamo utilizzare, oltre a impostare i campi che saranno aggiunti come variabili del nodo, più alcune informazioni sui gruppi che desideriamo creare.

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

Si noti che non viene specificato l'istanza di ServiceNow a cui ci connetteremo e non vengono forniti dati di accesso per la connessione. Tutto questo lo configureremo successivamente in Ansible Tower.

Il file collections/requirements.yml è necessario affinché Ansible Tower possa scaricare la raccolta necessaria e quindi ottenere il plugin di inventario. Altrimenti, dovremmo installare e mantenere manualmente questa raccolta su tutti i nostri nodi di Ansible Tower.

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

- name: servicenow.servicenow

Una volta che abbiamo inviato questa configurazione al sistema di controllo delle versioni, in Ansible Tower è possibile creare un progetto che fa riferimento al relativo repository. Nell'esempio seguente, Ansible Tower si collega al nostro repository su github. Si noti l'URL SCM: consente di specificare l'account per la connessione a un repository privato e di impostare un ramo, un tag o un commit specifico da estrarre.

Utilizzo dei plugin di inventory delle Ansible Content Collections in Ansible Tower

Creiamo le credenziali per ServiceNow

Come già detto, la configurazione nel nostro repository non contiene le credenziali per la connessione a ServiceNow e non specifica l'istanza di ServiceNow con cui interagiremo. Pertanto, per fornire queste informazioni, creeremo le credenziali in Ansible Tower. Secondo la documentazione del plugin inventario di ServiceNow, ci sono diverse variabili di ambiente grazie alle quali imposteremo i parametri di connessione, ad esempio, in questo modo:

= username
    	L'account utente di ServiceNow, deve avere i diritti per leggere cmdb_ci_server (predefinito), o la tabella specificata da SN_TABLE

    	set_via:
      	env:
      	- name: SN_USERNAME

In questo caso, se la variabile di ambiente SN_USERNAME è impostata, il plugin di inventario la utilizzerà come account per la connessione a ServiceNow.

Dobbiamo anche impostare le variabili SN_INSTANCE e SN_PASSWORD.

Tuttavia, in Ansible Tower non ci sono credenziali di questo tipo dove possiamo specificare questi dati per ServiceNow. Tuttavia, Ansible Tower ci consente di definire tipi di credenziali personalizzabili, per maggiori dettagli puoi leggere l'articolo «Ansible Tower Feature Spotlight: Custom Credentials».

Nel nostro caso, la configurazione input per le credenziali personalizzabili per ServiceNow appare come segue:

fields:
  - id: SN_USERNAME
	type: string
	label: Nome utente
  - id: SN_PASSWORD
	type: string
	label: Password
	secret: true
  - id: SN_INSTANCE
	type: string
	label: Istanza Snow
required:
  - SN_USERNAME
  - SN_PASSWORD
  - SN_INSTANCE

Queste credenziali saranno esportate come variabili d'ambiente con lo stesso nome. Questo è descritto nella configurazione dell'iniettore:

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

Quindi, abbiamo definito il tipo di credenziale necessario, ora possiamo aggiungere l'account ServiceNow e specificare l'istanza, il nome utente e la password, in questo modo:

Utilizzo dei plugin di inventory delle Ansible Content Collections in Ansible Tower

Creiamo un inventario

Quindi, ora abbiamo tutto pronto per creare un inventario in Ansible Tower. Lo chiameremo ServiceNow:

Utilizzo dei plugin di inventory delle Ansible Content Collections in Ansible Tower

Dopo aver creato l'inventario, possiamo collegarlo a una fonte di dati. Qui indichiamo il progetto che abbiamo creato in precedenza e inseriamo il percorso al nostro file di inventario YAML nel repository del sistema di controllo versione; nel nostro caso, si tratta di servicenow.yml nella radice del progetto. Inoltre, è necessario collegare anche l'account di ServiceNow.

Utilizzo dei plugin di inventory delle Ansible Content Collections in Ansible Tower

Per verificare se tutto funziona, proviamo a sincronizzarci con la fonte di dati, facendo clic sul pulsante «Sync all». Se tutto è configurato correttamente, i nodi dovrebbero essere importati nel nostro inventario:

Utilizzo dei plugin di inventory delle Ansible Content Collections in Ansible Tower

Si prega di notare che anche i gruppi necessari sono stati creati.

Conclusione

In questo post abbiamo esaminato come utilizzare i plugin di inventario delle collezioni in Ansible Tower, prendendo come esempio il plugin ServiceNow. Abbiamo anche inserito in modo sicuro le credenziali per collegarci al nostro istanza di ServiceNow. L'associazione del plugin di inventario da un progetto funziona non solo con plugin di terze parti o personalizzati, ma può anche essere applicata per modificare il funzionamento di alcuni plugin di inventario standard. Grazie a questo, Ansible Automation Platform si integra facilmente e senza soluzione di continuità con gli strumenti esistenti nell'automazione degli ambienti IT, che stanno diventando sempre più complessi.

Per ulteriori dettagli sui temi trattati in questo post, così come su altri aspetti dell'uso di Ansible, puoi consultare qui:

*Red Hat non offre alcuna garanzia sulla correttezza del codice fornito qui. Tutti i materiali sono forniti senza alcun supporto, salvo diversa indicazione espressa.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster