Cos'è e come funziona un modulo Ansible?

Copia URL

Un modulo Ansible® è un programma di piccole dimensioni che esegue azioni su un sistema locale, un'interfaccia di programmazione delle applicazioni (API) o un host remoto. I moduli sono espressi in codice, in genere Python, e contengono i metadati che definiscono dove, quando e da quali utenti deve essere eseguita una specifica attività di automazione. Nei repository come Ansible Automation Hub e Ansible Galaxy sono disponibili migliaia di moduli Ansible scaricabili, ma è possibile anche crearne di personalizzati da condividere con gli utenti Ansible all'interno dell'organizzazione o nell'ampia community Ansible.

I moduli sono in grado di svolgere funzioni IT relative a svariati scenari di utilizzo, tra cui reti, provisioning, sicurezza, comunicazioni e gestione del cloud, degli utenti e della configurazione. Per capire in che modo consentono di automatizzare queste e altre applicazioni, è fondamentale analizzare la relazione tra i moduli Ansible e gli altri componenti chiave dell'automazione Ansible, come le attività, i play, i playbook e i ruoli.

  • Attività: definisce l'azione da applicare a un host gestito, senza specificare quale. È possibile richiamare un modulo all'interno di un'attività per eseguirlo su un host, ma quest'ultimo viene definito all'esterno dell'attività, a livello di play.
  • Play: unità base dell'esecuzione Ansible, include un elenco di attività mappate dal play stesso a host gestiti specifici. I play contengono anche variabili e, in scenari di utilizzo più complessi, possono includere ruoli.
  • Ansible Playbook: include uno o più play. I playbook sono scritti in YAML, leggibili dagli utenti e facilmente condivisibili.
  • Ansible Role: raggruppa in pacchetti i contenuti Ansible, tra cui attività, handler, variabili, plugin, modelli e file, perché possano essere utilizzati nei play. Gli Ansible Role possono essere importati in un play, riutilizzati in ulteriori play o playbook e condivisi con altri utenti di automazione.
  • Raccolte: insiemi di contenuti Ansible pensati per consentire agli sviluppatori dell'automazione di ottenere cicli di sviluppo più efficienti e aumentare la produttività. Sono il formato più utilizzato per la creazione di pacchetti di moduli e la loro condivisione.
  • Plugin: parti di codice basate sulla funzionalità centrale di Ansible, in genere eseguite sul nodo di controllo. Sebbene siano un tipo di plugin, di solito i moduli eseguono le attività su un target, non sul nodo di controllo. 

In sostanza, se le attività sono i processi da completare, i moduli sono lo strumento da utilizzare per portarli a termine. Un'attività definisce un'azione da compiere; il modulo viene eseguito su un host gestito per completarla e, al termine, raccoglie i valori di ritorno in formato JSON.

In genere i moduli sono archiviati nella libreria di un playbook e vengono eseguiti quando quest'ultimo svolge l'attività associata; tuttavia, possono anche essere inclusi in un ruolo o una raccolta. Quando si importa un Ansible Role in un playbook, i moduli nella directory del ruolo eseguono l'attività o le attività al suo interno. I moduli scritti in un singolo play vengono utilizzati solo in una specifica occasione, mentre quelli contenuti all'interno di un ruolo vengono eseguiti ogni volta che questo viene richiamato all'interno del playbook.

I tre moduli indicati di seguito sono inclusi in Ansible Core e fanno parte di tutte le installazioni Ansible:

  • modulo dnf (ansible.builtin.dnf): installa, aggiorna e rimuove pacchetti e gruppi con dnf, il software di gestione dei pacchetti predefinito di Fedora.

  • modulo service (ansible.builtin.service): gestisce i servizi sugli host remoti, occupandosi, ad esempio, di avviarli, interromperli e rimetterli in funzione.

  • modulo command (ansible.builtin.command): esegue i comandi sui target.

Se i moduli Ansible esistenti non sono adatti a un determinato scenario di utilizzo dell'automazione, è possibile crearne di nuovi sulla base dello specifico processo da completare. Sebbene la creazione di un modulo possa variare a seconda della complessità delle attività di automazione che si intende eseguire, i passaggi per sviluppare un proprio modulo sono i seguenti:

  1. Creare la directory della libreria nel repository.
  2. Creare il file del modulo con Python o il linguaggio di programmazione preferito all'interno della directory della libreria.
  3. Sviluppare un playbook di test nella directory della libreria.
  4. Eseguire il playbook per testare il modulo.

I moduli devono essere concisi e avere l'obiettivo di risolvere un problema estremamente specifico, così da poter essere testati, usati, riutilizzati e condivisi con semplicità. Devono anche avere un'interfaccia definita che accetti argomenti e sia idempotente, ossia non devono effettuare modifiche se rilevano che la condizione corrente del nodo corrisponde alla condizione target desiderata.

Gli utenti che hanno da poco iniziato ad acquisire esperienza con lo sviluppo di contenuti Ansible o che desiderano semplificare il processo di creazione dei moduli possono usare Content Builder, uno strumento della community che genera moduli e altri plugin Ansible per scenari di utilizzo come reti, sicurezza e contenuti cloud.

Come gli altri contenuti Ansible, i moduli Ansible sono progettati per essere condivisi. Con una sottoscrizione Red Hat® Ansible Automation Platform è possibile impacchettare i moduli in raccolte e caricarli nell'Ansible Automation Hub, oppure condividerli con il resto dell'azienda nell'hub di automazione privato. I moduli possono anche essere distribuiti su Ansible Galaxy, un repository gratuito per la condivisione dei contenuti Ansible con gli utenti della community.

Oltre a svolgere un ruolo centrale nell'esecuzione dei playbook, i moduli sono una risorsa valevole anche per le aziende che desiderano adottare un approccio più avanzato e proattivo alla gestione dell'IT con l'automazione guidata dagli eventi.

Questa tecnologia connette i dati degli eventi IT ad azioni automatizzate, riducendo la necessità di intervenire manualmente per rispondere o porre rimedio agli imprevisti. Definiamo evento qualsiasi occorrenza significativa per la distribuzione di un servizio o la gestione dell'infrastruttura IT.

Funzionalità di Red Hat Ansible Automation Platform e soluzione completa per i team che desiderano sfruttare i vantaggi dell'automazione guidata dagli eventi, Event-Driven Ansible utilizza gli Ansible Rulebook per rispondere agli eventi con le azioni adeguate, definite dagli utenti, che comprendono l'esecuzione di playbook, ruoli, modelli e moduli. I rulebook usano istruzioni condizionali "if-this-then-that" che consentono di automatizzare le attività di routine, come l'esecuzione di un playbook di correzione in caso di guasto.

Quando i dati di una sorgente di eventi soddisfano le condizioni definite in un rulebook, Ansible Automation Platform innesca le azioni previste, che possono consistere nell'esecuzione di un intero playbook o di un singolo modulo che svolga un'azione altamente specifica. La risposta dipende interamente da ciò che si vuole accada quando si verifica un evento e da ciò che si è definito nel rulebook.

L'esempio seguente mostra l'attivazione di un modulo debug quando un evento di una sorgente webhook soddisfa le condizioni definite in un rulebook.

Il rulebook.yml:

--- - name: Listen for events on a webhook hosts: all ## Define our source for events sources: - ansible.eda.webhook: host: 0.0.0.0 port: 5000 ## Define the conditions we are looking for rules: - name: Say Hello condition: event.payload.message == "Ansible is super cool" ## Define the action we should take should the condition be met action: run_playbook: name: say-what.yml 

Il playbook say-what.yml:

- hosts: localhost connection: local tasks: - debug: msg: "Thank you, my friend!" 

In questo caso, il rulebook specifica cosa esegue il playbook say-what.yml quando le condizioni definite vengono soddisfatte. Il modulo debug è incluso nel playbook say-what.yml, perciò si attiva ogni volta che viene eseguito il playbook.

In quanto componente di Ansible Automation Platform, Event-Driven Ansible offre le capacità di gestione degli eventi necessarie a rendere efficiente l'erogazione dei servizi IT. Inoltre, eliminando la necessità di intervenire manualmente per completare le attività, permette di dedicarsi maggiormente ai progetti più strategici.

Poiché l'automazione guidata dagli eventi sfrutta spesso strumenti di monitoraggio di terze parti per individuare quando si verifica un evento, utilizzare contenuti Ansible che si integrino con le piattaforme e gli strumenti già in uso può semplificare la transizione a flussi di lavoro automatizzati e più efficienti. Con una sottoscrizione Red Hat Ansible Automation Platform ottieni accesso a migliaia di moduli, ruoli, plugin e documenti sotto forma di Ansible Content Collections. Sono inclusi sia Red Hat Ansible Certified Content sia i contenuti Ansible convalidati da Red Hat e i suoi partner; entrambe le tipologie sono scaricabili tramite l'Ansible Automation Hub.

Continua a leggere

Articolo

I concetti base di Ansible

Ansible consente di automatizzare i processi IT, come il provisioning e la gestione della configurazione. Questo articolo fornisce un'introduzione ai concetti base di Ansible.

Articolo

Cos'è la gestione dei processi aziendali?

La gestione dei processi di business (BPM, business process management) consiste nella creazione di modelli di business, nell'analisi e nell'ottimizzazione dei processi aziendali end to end per realizzare i tuoi obiettivi aziendali strategici.

Articolo

Perché scegliere Red Hat per l'automazione

Red Hat Ansible Automation Platform include tutti gli strumenti necessari per condividere le competenze di automazione tra i team e adottare l'automazione a livello aziendale.

Scopri di più sull'automazione

Prodotti

Collabora con il nostro team di consulenti strategici in grado di analizzare l'azienda nel suo insieme e valutare le sfide da affrontare, per aiutarti a superarle con soluzioni complete e convenienti.

Una piattaforma per implementare l'automazione in azienda, in qualsiasi fase del tuo percorso di trasformazione

Risorse

Ebook

L'azienda automatizzata connette persone e processi

Ebook

Automazione dei flussi di lavoro dell'infrastruttura

Continua a leggere

Formazione

Corso di formazione gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Corso di formazione gratuito

Red Hat Ansible Automation for SAP