Ansible: introduzione alla Server Automation

Ansible è uno strumento di automazione IT estremamente semplice. Proprio per questo è riuscito a farsi largo tra altri strumenti già esistenti come Puppet, Chef, Saltstack

ansible-introduzione-e-installazione-su-ubuntuVi è mai capitato di eseguire operazioni ripetitive e installazioni ricorrenti di software? Avete mai passato ore ed ore a predisporre il server in base ai requisiti del vostro applicativo? Avete mai dovuto eseguire la stessa attività più volte al giorno su server differenti?

Bhè, se almeno una volta nella vita vi siete trovati davanti a queste situazioni, avete sicuramente bisogno di un software che vi supporti, o meglio ancora, che automatizzi completamente queste attività e, Ansible fa al coso vostro.

Quali sono i punti di forza?

  • Agentless: non richiede l’installazione di nessun agent sul sever di destinazione, è sufficiente instaurare una connessione ssh
  • Estremamente semplice da configurare
  • Non sono necessarie competenze di programmazione
  • Ha una minima curva di apprendimento
  • Consente di gestire più server parallelamente
  • Viene programmato in un linguaggio human friendly
  • E’ scritto in python ed è multipiattaforma
  • Può essere usato come utente, non è necessario essere root

Come installarlo su Ubuntu 16.04

Anche in caso di installazione Ansible non si smentisce, occorrono solo pochi step. Vediamoli insieme.

Per prima cosa occorre scaricare il sorgente da github con il comando:

e poi eseguire l’installazione con:

Se tutto è andato bene potete eseguire il binario e vedere la versione:

E’ necessario avere installato sul sistema python 2.6 o 2.7, se la procedura precedente genera degli errori potete installare le dipendenze con i comandi:

Prima di iniziare con l’utilizzo vero e proprio vediamo quali sono i concetti principali:

Inventario: E’ la lista di server sulla quale operare, di default è in /etc/ansible/hosts ma può essere ridefinito a piacimento, i server possonono essere raggruppati in modo che una determinata attività venga eseguita su uno specifico set di server.

Task: Sono le vere e proprie attività da svolgere, grazie a questi task possiamo istruire il software.

Handlers: Si tratta delle istruzioni da eseguire dopo determinate azioni, sono molto utili per esempio per avviare un software dopo averlo installato o riavviarlo se ne abbiamo modificato la configurazione.

Playbook: Si tratta delle cosidette “ricette”, ovvero un insieme di task e handlers che permettono di configurare il sistema, le ricette vanno scritte utilizzando il linguaggio YAML.

Moduli: questo strumento di automazione è modulare e ogni modulo esegue delle attività ben definite. Esistono moduli per ogni aspetto (il modulo per installare pacchetti, il modulo per copiare file, il modulo per gestire gli utenti di sistema…).

Facciamo adesso un piccolo esempio, popoliamo l’inventario con il nostro server e su questo installiamo il webservice Apache.

Inseriamo nel file /etc/ansible/hosts

Sostituiamo l’ip indicato con l’ip del server che vogliamo utilizzare e testiamo il funzionamento di Ansible lanciando il modulo ping:

Se riceveremo una risposta del tipo:

significa che la connessione è andata a buon fine.

Passiamo ora alla nostra “ricetta” di test che installerà il webserver Apache, possiamo creare apache.yml con il seguente contenuto:

che potremo lanciare con il comando:

A questo punto avremo il nostro server di destinazione con Apache installato.

Ansible è decisamente uno strumento molto potente che rientra tra i tool fondamentali della filosofia DevOps.

Fisolofia in cui gli sviluppatori (Dev) e gli operativi (Ops) collaborano in modo sinergico per snellire le procedure, minimizzare i rischi favorendo l’entrata in produzione veloce e affidabile delle applicazioni (vi parleremo di questo al prossimo Smau ICT di Milano nel workshop “50 minutes as a DevOps“).

Lascia un commento

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

*

Accedi

Registrati | Password dimenticata?