Utilizzo dei plug-in di inventario delle raccolte di contenuti Ansible in Ansible Tower

Gli ambienti IT stanno diventando sempre più complessi. In queste condizioni è fondamentale per il sistema di automazione IT disporre di informazioni aggiornate sui nodi presenti nella rete e soggetti ad elaborazione. Nella Red Hat Ansible Automation Platform, questo problema viene risolto tramite il cosiddetto inventario (inventario) – elenchi di nodi gestiti.

Utilizzo dei plug-in di inventario delle raccolte di contenuti Ansible in Ansible Tower

Nella sua forma più semplice, l'inventario è un file statico. Questo è l'ideale quando inizi a lavorare con Ansible, ma con l'aumento dell'automazione diventa insufficiente.

Ed ecco perché:

  1. Come si aggiorna e si mantiene un elenco completo di nodi monitorati quando le cose cambiano costantemente, quando i carichi di lavoro e, di conseguenza, i nodi su cui vengono eseguiti, vanno e vengono?
  2. Come classificare i componenti dell'infrastruttura IT per selezionare specificamente i nodi per applicare una particolare automazione?

L'inventario dinamico fornisce risposte a entrambe queste domande (inventario dinamico) – uno script o plugin che ricerca i nodi da automatizzare, facendo riferimento alla fonte della verità. Inoltre, l'inventario dinamico classifica automaticamente i nodi in gruppi in modo da poter selezionare in modo più accurato i sistemi di destinazione per eseguire un'automazione Ansible specifica.

Plugin di inventario dare all'utente Ansible la possibilità di accedere a piattaforme esterne per cercare dinamicamente i nodi di destinazione e utilizzare queste piattaforme come fonte di verità durante la creazione di un inventario. L'elenco standard delle fonti in Ansible include le piattaforme cloud AWS EC2, Google GCP e Microsoft Azure, oltre a molti altri plug-in di inventario per Ansible.

Ansible Tower viene fornito con una serie di plugin di inventario, che funzionano immediatamente e, oltre alle piattaforme cloud sopra elencate, forniscono l'integrazione con VMware vCenter, Red Hat OpenStack Platform e Red Hat Satellite. Per questi plugin, devi solo fornire le credenziali per connetterti alla piattaforma di destinazione, dopodiché potranno essere utilizzati come fonte di dati di inventario in Ansible Tower.

Oltre ai plug-in standard inclusi con Ansible Tower, esistono altri plug-in di inventario supportati dalla community Ansible. Con il passaggio a Raccolte di contenuti Red Hat Ansible questi plugin iniziarono ad essere inclusi nelle raccolte corrispondenti.

In questo post prenderemo un esempio di lavoro con il plug-in di inventario per ServiceNow, una popolare piattaforma di gestione dei servizi IT in cui i clienti spesso memorizzano le informazioni su tutti i loro dispositivi nel CMDB. Inoltre, il CMDB può contenere contesto utile per l'automazione, come informazioni sui proprietari dei server, livelli di servizio (produzione/non produzione), aggiornamenti installati e finestre di manutenzione. Il plug-in di inventario Ansible può funzionare con ServiceNow CMDB e fa parte della raccolta ServiceNow sul portale galaxy.ansible.com.

Deposito Git

Per utilizzare un plug-in di inventario da una raccolta in Ansible Tower, è necessario impostarlo come origine del progetto. In Ansible Tower, un progetto è un'integrazione con una sorta di sistema di controllo della versione, come un repository git, che può essere utilizzato per sincronizzare non solo i playbook di automazione, ma anche variabili ed elenchi di inventario.

Il nostro repository è in realtà molto semplice:

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

Il file servicenow.yml contiene i dettagli per l'inventario dei plugin. Nel nostro caso, specifichiamo semplicemente la tabella nel CMDB di ServiceNow che vogliamo utilizzare. Impostiamo anche i campi che verranno aggiunti come variabili del nodo, oltre ad alcune informazioni sui gruppi che vogliamo 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: ''

Tieni presente che questo non specifica l'istanza di ServiceNow a cui ci connetteremo in alcun modo e non specifica alcuna credenziale per la connessione. Configureremo tutto questo più tardi in Ansible Tower.

Raccolte di file/requisiti.yml necessario affinché Ansible Tower possa scaricare la raccolta richiesta e quindi ottenere il plug-in di inventario richiesto. Altrimenti, dovremmo installare e mantenere manualmente questa raccolta su tutti i nostri nodi Ansible Tower.

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

- name: servicenow.servicenow

Una volta inviata questa configurazione al controllo della versione, possiamo creare un progetto in Ansible Tower che faccia riferimento al repository corrispondente. L'esempio seguente collega Ansible Tower al nostro repository github. Presta attenzione all'URL SCM: ti consente di registrare un account per connetterti a un repository privato, nonché di specificare un ramo, un tag o un impegno specifico da controllare.

Utilizzo dei plug-in di inventario delle raccolte di contenuti Ansible in Ansible Tower

Creazione delle credenziali per ServiceNow

Come accennato, la configurazione nel nostro repository non contiene credenziali per connettersi a ServiceNow e non specifica l'istanza di ServiceNow con cui comunicheremo. Pertanto, per impostare questi dati, creeremo credenziali in Ansible Tower. Secondo Documentazione del plug-in di inventario di ServiceNow, ci sono una serie di variabili d'ambiente con le quali imposteremo i parametri di connessione, ad esempio, in questo modo:

= 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

In questo caso, se la variabile di ambiente SN_USERNAME è impostata, il plug-in di inventario la utilizzerà come account per connettersi a ServiceNow.

Dobbiamo anche impostare le variabili SN_INSTANCE e SN_PASSWORD.

Tuttavia, non esistono credenziali di questo tipo in Ansible Tower in cui sia possibile specificare questi dati per ServiceNow. Ma Ansible Tower ci permette di definire tipi di credenziali personalizzate, puoi leggere di più al riguardo nell'articolo "Caratteristiche in evidenza di Ansible Tower: credenziali personalizzate".

Nel nostro caso, la configurazione di input per le credenziali personalizzate per ServiceNow è simile alla seguente:

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

Queste credenziali verranno esposte come variabili di 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 di cui abbiamo bisogno, ora possiamo aggiungere un account ServiceNow e impostare l'istanza, il nome utente e la password, in questo modo:

Utilizzo dei plug-in di inventario delle raccolte di contenuti Ansible in Ansible Tower

Creiamo l'inventario

Quindi ora siamo tutti pronti per creare un inventario in Ansible Tower. Chiamiamolo ServiceNow:

Utilizzo dei plug-in di inventario delle raccolte di contenuti Ansible in Ansible Tower

Dopo aver creato l'inventario, possiamo allegarvi un'origine dati. Qui specifichiamo il progetto che abbiamo creato in precedenza e inseriamo il percorso del nostro file di inventario YAML nel repository del controllo del codice sorgente, nel nostro caso è servicenow.yml nella radice del progetto. Inoltre, devi collegare il tuo account ServiceNow.

Utilizzo dei plug-in di inventario delle raccolte di contenuti Ansible in Ansible Tower

Per verificare come funziona il tutto, proviamo a sincronizzarci con l'origine dati facendo clic sul pulsante "Sincronizza tutto". Se tutto è configurato correttamente, i nodi dovrebbero essere importati nel nostro inventario:

Utilizzo dei plug-in di inventario delle raccolte di contenuti Ansible in Ansible Tower

Tieni presente che sono stati creati anche i gruppi di cui abbiamo bisogno.

conclusione

In questo post, abbiamo esaminato come utilizzare i plug-in di inventario dalle raccolte in Ansible Tower utilizzando il plug-in ServiceNow come esempio. Abbiamo anche registrato in modo sicuro le credenziali per connetterci alla nostra istanza di ServiceNow. Il collegamento di un plug-in di inventario da un progetto funziona non solo con plug-in di terze parti o personalizzati, ma può anche essere utilizzato per modificare il funzionamento di alcuni inventari standard. Ciò rende Ansible Automation Platform facile e integra da integrare con gli strumenti esistenti per automatizzare ambienti IT sempre più complessi.

Puoi trovare ulteriori informazioni sugli argomenti discussi in questo post, nonché su altri aspetti dell'utilizzo di Ansible, qui:

*Red Hat non garantisce che il codice qui contenuto sia corretto. Tutti i materiali sono forniti senza alcuna approvazione, salvo diversa indicazione espressa.

Fonte: habr.com

Aggiungi un commento