Ansible è un software che permette di automatizzare le procedure di configurazione e la gestione su sistemi unix e derivati.
Potente, semplice e dal facile apprendimento, sfrutta due tipi di server:
- nodi
- macchine di controllo
La macchina controllore è quella che organizza il tutto eseguendo determinati comandi sui nodi e a cui si connette una chiave di accesso SSH.
Ansible utilizza OpenSSH e WinRM e non necessita di agenti che ammettano il rischio di exploit o di problematiche di aggiornamento, inoltre non richiede agenti da installare sui nodi.
Le sue specifiche di configurazione sono scritte in documenti YAML che vengono chiamati Playbook; YAML è un linguaggio molto elementare basato principalmente sull’indentazione.
Le specifiche di configurazione operano attraverso dei task, per esempio: un task potrebbe essere quello di aggiornare il file di configurazione di un database server, in questo caso, un gestore di eventi chiuderebbe il database al termine dell’esecuzione del task stesso.
Ansible è semplice: il linguaggio nel quale configuriamo i playbook è molto intuitivo e i task sono eseguibili in sequenza.
Con questo software è possibile eseguire un deploy in modo molto veloce, in ogni momento e consente la gestione dell’intero ciclo di vita delle applicazioni.
Un altro aspetto positivo di Ansible è che si tratta di un pacchetto completo: contiene strumenti per il deployment delle applicazioni ai nodi e il gestore delle configurazioni dei server oltre che per il provisioning.
Inoltre risulta essere molto affidabile: se scritto con la dovuta accuratezza, un Playbook può essere in grado di gestire anche situazioni inaspettate che potrebbero verificarsi sui nodi.
Ansible Core è la versione open-source, ma di Ansible esiste anche una versione enterprise, a pagamento, chiamata Ansible Tower; un enterprise framework che tra le altre caratteristiche mette a disposizione un pannello di controllo per gestire i nodi, le automazioni (attraverso interfaccia utente e RESTfulAPI) e le API.
Per capire il funzionamento di questo software è opportuno descrivere quelli che ne sono i suoi concetti chiave, ovvero:
- Inventory: è una raccolta di nodi e gruppi ai quali Ansible può connettersi allo scopo di gestirne le configurazioni;
- Task: sono le istruzioni che Ansible esegue sui nodi target;
- Handler: sono istruzioni che vanno eseguite come conseguenza di una determinata azione;
- Play: è una serie di task ordinati da eseguire sui nodi selezionati dall’inventario;
- Playbook: è un file che contiene uno o più Play;
- Role: rappresentano una serie di contenuti strettamente correlati che permettono di gestire meglio e mantenere una serie di Playbook.
Partecipa al prossimo appuntamento di Commit University Smart Shots e scopri di più su Ansible https://www.facebook.com/events/547203472864496/
https://www.youtube.com/channel/UCB3wPMQoqU4UVOcz9rC6Htw