Ansible: Introduzione, Config Management e Concetti Chiave

Ansible per l’automazione IT e Configuration Management: vorresti saperne di piu’? Sei nel posto giusto.

Formazione Ansible

Ansible e’ un tool di Configuration Management ed IT Automation che ha riscosso notevole successo tra gli addetti ai lavori in virtu’ della sua immediatezza, della sua semplicita’ di utilizzo e del superamento delle limitazioni server/agent.

Questa post nasce con l’obiettivo di introdurti all’uso di Ansible.

Se sei un Sysadmin o un Developer potrai trarre sicuramente grande beneficio dall’uso di questo tool: con Ansible non e’ mai stato cosi’ facile definire lo stato di un server e delle tue applicazioni web.

Ultimo aggiornamento: 13 Novembre 2017

Che cos’e’ Ansible

Ansible e’ un tool di Configuration Management ed IT Automation che rientra nella sfera degli strumenti tipici del metodo DevOps.

DevOps e’ un movimento nato per distruggere il muro di gomma che nel corso degli anni si e’ innalzato tra Developer e Sysadmin. Per usare un’analogia, DevOps e’ una cultura che ha lo scopo di creare una pipeline (conduttura) tra sviluppatori ed amministratori di sistema.

L’obiettivo e’ uno solo: aumentare costantemente la soddisfazione del cliente producendo ed erogando software allo stato dell’arte con continue release correttive.

Per raggiungere un obiettivo cosi’ ambizioso e’ importante poter contare non solo sulle persone ma anche sugli strumenti.

Cosi’ sono nati tool che hanno lo scopo di automatizzare lo sviluppo, il testing e la configurazione di server ed applicazioni.

La famiglia dei tool di Configuration Management comprende ad esempio software come Puppet, Chef, Saltstack e CFEngine.

Ansible: Configuration Management in breve

Configuration Management significa definire la configurazione delle applicazioni web e dei server in modo consistente, possibilmente sotto controllo di versione.

Con il Configuration Management e’ possibile definire a priori come dovra’ essere configurato il server X o l’applicazione Y. Il tutto in linguaggio sorgente o sotto forma di meta-linguaggio.

I tool di Configuration Management leggono le configurazioni a partire da un file sorgente ed applicano le stesse su uno o piu’ server, in modo automatico, prevedibile e idempotente.

Esempio. In modo molto semplificato, una possibile configurazione di un server potrebbe essere:

Un tool di Configuration Management puo’ leggere queste istruzioni ed applicarle su uno o piu’ server. In questo modo l’operatore puo’ replicare la stessa configurazione su decine di server oppure ricostruire la stessa in pochi secondi quando uno o piu’ server vengono messi fuori uso.

Ansible, un po’ di storia

Ansible nasce da un’idea di Michael de Haan.

De Haan un bel giorno sente la necessita’ di scrivere un software che potesse semplificare le attivita’ di Configuration Management ed Automazione IT. E ci riesce.

Fino a questo momento il panorama del Configuration Management era dominato da Puppet e Chef (che comunque mantengono quote di mercato molto vaste).

Ma seppure ottimi, sia Puppet che Chef hanno alcuni punti deboli, che fanno storcere il naso ai Sysadmin piu’ navigati:

– Puppet e Chef funzionano principalmente in modalita’ server/agent

– Chef richiede la conoscenza del linguaggio Ruby

Anche se non si tratta di limitazioni insormontabili ci sono comunque alcuni svantaggi in questo tipo di approccio.

Puppet IT Automation

Prima di tutto non sempre e’ possibile installare un agent sul server di destinazione.

Un agent e’ un piccolo software che rimane in esecuzione permanente su uno o piu’ server ed ha lo scopo di attendere comandi e configurazioni impartite dal server master.

Sia Chef che Puppet utilizzano questo approccio. Che spesso non e’ possibile mettere in pratica.

Pensiamo ad ambienti server che per ragioni di conformita’ o sicurezza non possono ospitare agent o software di terzi.

Oppure a quei server con un discreto numero di anni sulle spalle, dove l’installazione di una versione aggiornata di Ruby (richiesta da Puppet) potrebbe causare effetti imprevedibili.

Qui entra in scena Ansible.

fork Ansible su Github
La community Ansible e’ in continua espansione come dimostrano il numero di fork Ansible su Github

Ansible: i vantaggi

Perche’ adottare Ansible dunque?

Curva di apprendimento bassa

Dalla lettura della documentazione alla scrittura dei primi Playbooks il passo e’ breve. In pochi minuti e’ possibile iniziare a lavorare con Ansible senza dover penare con Puppet master e agent vari.

Non sono richieste capacita’ di coding

Puppet e Chef nascono entrambi da un team di sviluppatori follemente innamorati di Ruby.

Per la definizione dello stato dei server e delle configurazioni, Puppet adotta un linguaggio simile a Ruby.

Mentre per definire lo stato di un server con Chef e’ addirittura essenziale conoscere il linguaggio. Ansible supera completamente questa limitazione.

In Ansible ad esempio e’ possibile definire che il server X dovra’ contenere Apache con due righe:

A differenza di Puppet, Chef e Saltstack, Ansible non ha bisogno di nessun agente per applicare le configurazioni su un server: viene utilizzato di default il trasporto SSH.

Questo elimina la necessita’ di installare software estraneo sui nodi.

Modulare e Open Source

Ansible e’ composto da numerosi moduli.

Per analogia, i moduli hanno la stessa funzione delle risorse in Puppet.

Questo consente di espandere Ansible praticamente all’infinito, senza contare che i moduli possono essere scritti in qualsiasi linguaggio di programmazione. Inoltre Ansible e’ Open Source e la comunita’ cresce rapidamente.

Ansible, i concetti chiave

Prima di concludere vediamo quali sono i concetti chiave ed i componenti che ruotano attorno a questo software.

L’inventario

L’inventario e’ una lista di server sui quali Ansible applica, a comando, le configurazioni di sistema e le istruzioni di automazione.

L’inventario di solito e’ contenuto all’interno del file /etc/ansible/hosts anche se e’ possibile specificare una posizione a piacere.

All’interno dell’inventario l’operatore puo’ specificare la lista dei server “bersaglio”.

Qui si da per scontato che ogni server abbia una corrispondenza DNS anche se e’ possibile specificare ogni server con l’ip. Un esempio di inventario:

I Tasks

In Ansible i Tasks sono dei “compiti” ovvero una serie di istruzioni che il software esegue in ordine di apparizione. Ogni istruzione contiene la definizione e/o la configurazione che dovra’ essere applicata ad ogni sistema.

Gli Handlers

Gli Handlers in Ansible sono delle istruzioni che vengono eseguite a seguito di una determinata azione.

Ad esempio dopo aver installato httpd un operatore puo’ voler avviare Apache automaticamente. Un esempio di Handler che avvia Apache su CentOS:

Gli Handlers si basano sul modulo service : questo modulo viene utilizzato per gestire i servizi di sistema.

I Playbook

I Playbook sono delle collezioni di Tasks. Ogni Playbook puo’ contenere un determinato numero di Tasks e di Handlers. I Playbook devono essere definiti in linguaggio YAML.

Considera l’esempio in basso: si tratta di un Playbook che contiene le istruzioni per installare Nrpe e relativi plugin su un gruppo di server CentOS.

L’ Handler “restart nrpe” serve per riavviare il servizio nrpe su CentOS dopo la prima installazione dei pacchetti o dopo la modifica del file di configurazione :

I Moduli

Infine, i moduli: Ansible e’ composto da numerosi moduli.

Ne esistono per gestire i servizi di Cloud Computing (EC2 su AWS), oppure Rackspace e Google Compute Engine.

Ci sono moduli per installare pacchetti software sui server e per gestire file di configurazione e database ecc ecc.

Ogni modulo svolge delle funzioni ben precise e gestisce un singolo aspetto di ogni sistema.

Questa architettura consente di espandere Ansible praticamente all’infinito.

Per una lista completa dei moduli puoi consultare la documentazione ufficiale: Ansible Modules.

In conclusione

Siamo alle porte del 2018 e ci sono numerose alternative ad Ansible. Senza contare che nell’epoca di Docker e Kubernetes molte delle esigenze che esistevano fino a qualche anno fa ora stanno venendo meno.

Conoscere e saper utilizzare Ansible in ogni caso è fondamentale per stare al passo con i moderni metodi di gestione e configurazione Server.

Per questo motivo sono a disposizione dei corsi di formazione Ansible. Prenota ora il tuo corso, bastano 5 minuti.

Alla prossima!

Una risposta a “Ansible: Introduzione, Config Management e Concetti Chiave”

  1. Seconda lezione?

    a grandi linee qualche spunto per sftruttare ansible per lo sviluppo in wordpress?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.