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:

git clone git://github.com/ansible/ansible.git --recursive

e poi eseguire l’installazione con:

cd ansible

source ./hacking/env-setup

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

ansible --version
ansible 2.2.0 (devel 547cea556f) last updated 2016/09/20 07:29:15 (GMT +200)
lib/ansible/modules/core: (detached HEAD 600228ca7f) last updated 2016/09/20 07:29:32 (GMT +200)
lib/ansible/modules/extras: (detached HEAD db7a3f48e1) last updated 2016/09/20 07:29:46 (GMT +200)
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides

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:

easy_install pip
pip install paramiko PyYAML Jinja2 httplib2

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

[webserver]

192.168.1.110 ansible_connection=ssh ansible_ssh_user=root

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

ansible webserver -m ping

Se riceveremo una risposta del tipo:

 192.168.1.110 | SUCCESS => {
"changed": false,
"ping": "pong"
}

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:

- hosts: webserver
  tasks:
    - name: install apache2
      apt: name=apache2 update_cache=yes state=latest

che potremo lanciare con il comando:

ansible-playbook apache.yml

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“).

No Comments

Post a Comment

− 4 = 3

*

Accedi

Password dimenticata?