Cos'è Ansible Role e come funziona?

Copia URL

Un Ansible® Role è un'unità di automazione Ansible autosufficiente e portabile che permette di raggruppare le attività (o task) correlate e le variabili, i file, gli handler e le altre risorse associate in una struttura di file nota. Mentre le attività di automazione si possono scrivere solamente in un Ansible Playbook, con gli Ansible Role è possibile creare bundle di contenuti di automazione ed eseguirli in uno o più play, riutilizzarli in più playbook oppure condividerli con altri utenti tramite le raccolte.

Automazione aziendale in cinque passaggi

Gli Ansible Role sono scritti in sintassi YAML, un linguaggio per la serializzazione di dati leggibile in chiaro e utilizzato nella scrittura dei file di configurazione. Quando si inserisce un ruolo in un'attività o in un play, Ansible cerca un file main.yml in almeno una delle otto directory standard dei ruoli. Di seguito un elenco e una breve descrizione delle directory, che comprendono: tasks, handlers, modules, defaults, variables, files, templates e meta.

roles/
    common/               # this hierarchy represents a "role"
        tasks/            #
            main.yml      #  <-- tasks file can include smaller files if warranted
        handlers/         #
            main.yml      #  <-- handlers file
        templates/        #  <-- files for use with the template resource
            ntp.conf.j2   #  <------- templates end in .j2
        files/            #
            bar.txt       #  <-- files for use with the copy resource
            foo.sh        #  <-- script files for use with the script resource
        vars/             #
            main.yml      #  <-- variables associated with this role
        defaults/         #
            main.yml      #  <-- default lower priority variables for this role
        meta/             #
            main.yml      #  <-- role dependencies
        library/          # roles can also include custom modules
        module_utils/     # roles can also include custom module_utils
        lookup_plugins/   # or other types of plugins, like lookup in this case
    webtier/              # same kind of structure as "common" was above, done for the webtier role
    monitoring/           # ""
    fooapp/               # ""

È possibile utilizzare un Ansible Role richiamandolo in un playbook. Si può inserire nell'elenco tramite l'opzione roles oppure aggiungere nella sezione delle attività del ruolo utilizzando i comandi include_role o import_role. I ruoli inseriti con l'opzione roles o aggiunti con import_role vengono eseguiti prima di tutte le altre attività del play, mentre i ruoli inseriti con include_role vengono eseguiti nell'ordine in cui sono definiti all'interno dell'elenco delle attività.

Scopri di più sugli Ansible Role e sul loro utilizzo

Risorse da Red Hat

Gli Ansible Role e gli Ansible Playbook sono entrambi strumenti per l'organizzazione e l'esecuzione delle attività di automazione, ma svolgono funzioni diverse. Decidere di creare Ansible Role oppure di scrivere tutte le attività in un Ansible Playbook dipende dallo scenario di utilizzo e dal grado di familiarità con Ansible.

La maggior parte degli sviluppatori e degli amministratori di sistema comincia creando singoli playbook. Un playbook è un elenco di attività di automazione eseguite per un inventario definito. Le attività si possono organizzare in play, ovvero raccolte di una o più attività associate a un determinato host ed eseguite in ordine. A loro volta i play si possono raggruppare in playbook. In questo modo si ottiene un meccanismo flessibile per eseguire l'automazione Ansible in un unico file.

Per quanto i playbook siano strumenti efficaci per lo sviluppo di progetti di automazione con Ansible, scrivere tutte le attività in un playbook non è sempre l'approccio più indicato. In contesti in cui la portata e le variabili sono complesse e la riusabilità è importante, utilizzare gli Ansible Role per creare i contenuti di automazione e richiamarli all'interno di un playbook potrebbe essere la scelta più opportuna.

L'esempio riportato di seguito illustra l'utilizzo del ruolo linux-systemr-roles.timesync all'interno di un playbook. Sarebbero serviti quattro task per avere lo stesso risultato che qui si ottiene con un solo ruolo.

- name: Manage timesync with 3 servers
  hosts: targets
  vars:
     timesync_ntp_servers:
        - hostname: foo.example.com
          iburst: true
        - hostname: bar.example.com
          iburst: true
        - hostname: baz.example.com
          iburst: true
  roles:
     - linux-system-roles.timesync

Creare Ansible Role invece di scrivere tutti i contenuti di automazione in un unico playbook offre numerosi vantaggi:

Riusabilità e condivisione

I ruoli sono unità di automazione riutilizzabili. Dato che i ruoli separano i raggruppamenti logici delle attività di automazione dal contesto del singolo play o playbook, è possibile riutilizzarli in più play o playbook, ma anche condividerli e impiegarli in altri progetti.

Modularità

L'utilizzo dei ruoli promuove l'adozione di un approccio modulare all'automazione in cui ciascun ruolo è responsabile di una funzionalità specifica. Questo approccio permette di analizzare, gestire e risolvere i problemi relativi al codice di automazione più agevolmente.

Organizzazione

Gli Ansible Role permettono di organizzare le attività, i modelli, i file e le variabili in maniera strutturata. Questa struttura, in cui tutti gli elementi relativi a uno specifico ruolo sono contenuti nella sua directory, aiuta a semplificare la gestione delle configurazioni di automazione complesse.

Parametrizzazione

I ruoli permettono di definire variabili predefinite che si possono sostituire quando il ruolo è utilizzato in un Ansible Playbook. Questo significa che è possibile adattare il comportamento del ruolo in base all'ambiente o allo scenario di utilizzo senza dover modificare il ruolo.

Versioning e gestione delle dipendenze

I ruoli prevedono il controllo delle versioni e danno la possibilità di specificare le dipendenze del ruolo in un file meta/main.yml all'interno del ruolo. In questo modo è possibile gestire le versioni e le dipendenze in maniera esplicita e migliorare così la stabilità e la coerenza tra i diversi ambienti.

Test

La struttura dei ruoli si presta all'applicazione delle metodologie di test. È possibile creare test per un ruolo specifico per verificare che funzioni correttamente prima di integrarlo nei playbook.

Semplicità

Nel caso di progetti più estesi o complessi, i ruoli contribuiscono a semplificare l'uso degli Ansible Playbook. Anziché avere un playbook molto ampio che include tutte le attività, gli handler e i modelli, è possibile scriverne uno più conciso e facile da leggere e comprendere. Così facendo diventa anche più semplice individuare i ruoli da riutilizzare in progetti futuri. Un vantaggio notevole che accelera la scrittura dei contenuti di automazione e semplifica i flussi di lavoro. 

È possibile realizzare un nuovo ruolo utilizzando il comando ansible-galaxy role init role_name, che crea una directory organizzata secondo una struttura standard. Una volta verificata la directory, si possono definire le attività, la variabili predefinite e gli altri componenti. Si può anche aggiungere la documentazione nel file README.md in meta/main.yml, ma si tratta di un passaggio facoltativo.

La creazione di un nuovo ruolo richiede un certo livello di dimestichezza nell'uso di Ansible e potrebbe risultare complicato per quei team che hanno da poco iniziato a sviluppare i contenuti di automazione. Per snellire la creazione dei contenuti di automazione, sia i principianti che gli sviluppatori più esperti possono usufruire di Red Hat® Ansible Lightspeed with IBM watsonx Code Assistant, un servizio di intelligenza artificiale generativa che offre suggerimenti per la stesura del codice in base alle procedure consigliate di Ansible. È sufficiente formulare un prompt in linguaggio naturale in cui si definisce il tipo di automazione desiderata e Ansible Lightspeed with watsonx Code Assistant genera un contenuto composto da una o più attività. Queste attività si possono poi inserire in un Ansible Role o un Ansible Playbook.

Riducendo il lavoro necessario per la creazione, la gestione e il perfezionamento del codice Ansible, Ansible Lightspeed with watsonx Code Assistant aiuta ad aumentare la produttività e ad accelerare i tempi per l'adozione dell'automazione. 

Scheda tecnica: Red Hat Ansible Automation PlatformBlog: L'evoluzione di Ansible: supporto alle persone e alle tecnologieScopri altre risorse di apprendimento su Ansible Automation Platform

Gli Ansible Role sono facilmente condivisibili. In questo modo i team possono sfruttare ruoli testati e aggiornati in tutti i progetti di automazione. I ruoli si possono condividere nei seguenti repository:

  • Ansible Galaxy. È un repository libero per la condivisione dei ruoli e di altri contenuti Ansible con il resto della community Ansible. I ruoli si caricano su Ansible Galaxy tramite l'interfaccia a riga di comando (CLI) mentre le raccolte si possono condividere dall'interfaccia web. Ansible Galaxy è un sito gestito dalla community, per questo motivo i contenuti non sono controllati, certificati, né supportati da Red Hat.
  • Ansible Automation Hub. Incluso nella sottoscrizione Red Hat Ansible Automation Platform, Ansible Automation Hub è un repository centralizzato dove trovare, scaricare e condividere le Ansible Content Collections. Ansible Automation Hub è ospitato da Red Hat e raccoglie contenuti certificati e convalidati da Red Hat e dai suoi partner ISV.
  • Automation Hub privato. Si tratta di un repository privato on premise che permette alle organizzazioni di gestire, condividere e ottimizzare i contenuti internamente all'azienda. Con questo repository le aziende possono condividere i ruoli e gli altri contenuti di automazione in tutta l'azienda per semplificare i flussi di lavoro e accelerare l'automazione. 
Blog: Cos'è Ansible Automation Hub e quali sono i suoi vantaggi?

Red Hat Ansible Automation Platform è una piattaforma unificata progettata per supportare le aziende nelle iniziative di innovazione e crescita grazie all'automazione. La sottoscrizione Red Hat comprende l'accesso alle Red Hat Certified Content Collection e ai contenuti Ansible convalidati, disponibili nell'Ansible Automation Hub.

La sottoscrizione include anche Red Hat Ansible Lightspeed with IBM watsonx Code Assistant, uno strumento che semplifica la stesura del codice, aiuta a migliorare le attività presenti negli Ansible Role e accelera la creazione dei contenuti. Perfettamente integrato in Visual Studio Code, Ansible Lightspeed offre un valido aiuto per gli sviluppatori indipendentemente dal loro grado di esperienza con l'automazione Ansible. Consente infatti di creare agevolmente Ansible Role e Ansible Playbook in linea con le procedure consigliate senza bisogno di passare da un ambiente di sviluppo all'altro.

Ansible Lightspeed prevede anche l'abbinamento delle fonti dei contenuti, consente cioè di controllare i dati per l'addestramento della fonte per la generazione dei suggerimenti e di migliorare il processo decisionale per la creazione dei ruoli. Inoltre, con modelli addestrati su migliaia di ruoli sviluppati dalla community Ansible e punti dati forniti da Red Hat, Ansible Lightspeed aiuta a creare e perfezionare il codice Ansible in maniera precisa e trasparente per soddisfare le esigenze aziendali e accelerare l'adozione dell'automazione.

Scopri perché scegliere Red Hat per l'automazioneBlog: Generazione di playbook e dei deployment on premise con Ansible LightspeedScheda tecnica: Red Hat Ansible Lightspeed with IBM watsonx Code AssistantBlog: Diventa specialista dell'automazione con i contenuti convalidati Ansible
Hub

Il blog ufficiale di Red Hat

Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.

Tutte le versioni di prova dei prodotti Red Hat

Grazie alle versioni di prova gratuite dei prodotti Red Hat potrai acquisire esperienza pratica, prepararti per le certificazioni o capire se il prodotto che hai scelto è giusto per le esigenze della tua organizzazione.

Continua a leggere

Cos'è il controllo degli accessi?

Il controllo degli accessi è una tecnica di autorizzazione che prevede di stabilire quali risorse di un'infrastruttura IT possono essere visualizzate da un determinato utente o sistema e quali azioni quest'ultimo può intraprendere su di esse.

Gestione dell'infrastruttura virtuale e ruolo dell'automazione

La gestione dell'infrastruttura virtuale si riferisce al coordinamento di software, risorse IT e altri strumenti per la gestione dell'intero ciclo di vita delle macchine virtuali e dei relativi ambienti IT.

Automazione: Cos'è un modulo Ansible e come funziona?

Un modulo Ansible® è una piccola parte di codice di automazione che esegue azioni su un sistema locale, un'API o un host remoto.

Automazione e gestione: risorse consigliate

Prodotto in evidenza

Articoli correlati