Automazione senza agenti
Gli strumenti di configuration management disponibili nel 2012 — Puppet e Chef in particolare — richiedono l’installazione di un agente software su ogni macchina gestita. L’agente si connette periodicamente a un server centrale, scarica la configurazione desiderata e la applica. Questo modello funziona, ma introduce complessità: l’agente va installato, aggiornato e monitorato su ogni nodo; il server centrale diventa un componente critico; la comunicazione richiede certificati e configurazioni di rete dedicate.
Michael DeHaan, già autore di Cobbler (un tool di provisioning) e contributore a Puppet, progetta Ansible con una premessa diversa: niente agenti. Ansible si connette ai server remoti tramite SSH — un servizio già presente su qualsiasi macchina Linux — ed esegue moduli Python direttamente sul nodo target. Terminata l’esecuzione, non resta nulla installato sulla macchina remota.
Playbook e idempotenza
La configurazione in Ansible è espressa attraverso playbook scritti in YAML, un formato leggibile che non richiede competenze di programmazione. Un playbook è una sequenza ordinata di task, ciascuno dei quali invoca un modulo — un’unità di lavoro che gestisce una risorsa specifica: pacchetti, file, servizi, utenti, repository.
Ogni modulo è progettato per essere idempotente: eseguirlo più volte produce lo stesso risultato della prima esecuzione. Se un pacchetto è già installato, il modulo non fa nulla. Se un file ha già il contenuto desiderato, non viene riscritto. L’idempotenza garantisce che i playbook possano essere rieseguiti in sicurezza, senza effetti collaterali.
Inventory e organizzazione
L’inventory è il file che definisce l’infrastruttura: quali macchine esistono, come raggiungerle, a quali gruppi appartengono. I gruppi permettono di applicare configurazioni diverse a categorie di server — web server, database, load balancer — con un unico playbook. Le variabili personalizzano il comportamento per gruppo, per host o per ambiente (staging, produzione).
I ruoli organizzano i playbook in componenti riutilizzabili: un ruolo “nginx” contiene tutto il necessario per installare e configurare il web server, un ruolo “postgresql” gestisce il database. I ruoli si compongono e si condividono tra progetti.
Una soglia di ingresso più bassa
Ansible non richiede un’infrastruttura dedicata, non impone un linguaggio di programmazione specifico per le configurazioni e produce risultati visibili in minuti dall’installazione. Per i team che gestiscono decine o centinaia di server e cercano un modo strutturato per automatizzare il provisioning e la configurazione, Ansible offre un percorso di adozione graduale e a basso rischio.
Link: ansible.com
