Capitolo 1 – Cos'è Ansible
1.1 Definizione
Ansible è uno strumento di automazione IT open source utilizzato per:
- Configuration Management
- Provisioning di server
- Application Deployment
- Orchestrazione di infrastrutture
È sviluppato da Red Hat ed è oggi uno degli strumenti più utilizzati in ambito sistemistico e DevOps.
A differenza di altre soluzioni (come Puppet o Chef), Ansible è agentless: non richiede l'installazione di alcun agente sui nodi gestiti.
1.2 A cosa serve in ambito Sysadmin
In un contesto sistemistico, Ansible permette di:
- Installare e configurare pacchetti su più server contemporaneamente
- Standardizzare configurazioni
- Ridurre errori manuali
- Automatizzare attività ripetitive
- Garantire coerenza tra ambienti (dev, staging, produzione)
Esempio pratico:
Senza Ansible:
- Accesso SSH su 10 server
- Installazione manuale nginx
- Modifica manuale dei file di configurazione
- Riavvio servizio
Con Ansible:
- Un singolo comando
- Configurazione identica su tutti i nodi
- Procedura ripetibile e versionabile
1.3 Architettura di base
Ansible utilizza un'architettura molto semplice.
Control Node
Macchina su cui è installato Ansible e da cui partono i comandi.
Managed Nodes
Server gestiti da Ansible tramite SSH.
Inventory
File che definisce l'elenco dei server da gestire.
Playbook
File YAML che descrive lo stato desiderato dei sistemi.
1.4 Come funziona
Il flusso operativo è il seguente:
- Ansible legge l'inventory
- Si connette ai nodi via SSH
- Esegue i moduli richiesti
- Riporta l'esito dell'operazione
Ansible lavora in modalità dichiarativa:
non si descrive "come fare", ma "quale deve essere lo stato finale".
Esempio concettuale:
- Stato desiderato: nginx installato
- Se non è installato → viene installato
- Se è già installato → non fa nulla
Questo comportamento si chiama idempotenza.
1.5 Perché è scelto in ambienti professionali
Ansible è diffuso in ambienti enterprise per diversi motivi:
- Nessun agente da mantenere
- Semplicità di apprendimento
- Utilizzo di YAML leggibile
- Integrazione con Git
- Ampia libreria di moduli
- Forte integrazione con ecosistema Red Hat
È utilizzato sia per piccole infrastrutture che per ambienti complessi multi-tier.
1.6 Casi d’uso tipici
- Setup iniziale di nuovi server
- Configurazione web server (nginx, apache)
- Gestione utenti e permessi
- Installazione stack LAMP / LEMP
- Hardening di base
- Deploy applicativi
- Aggiornamenti massivi
1.7 Quando NON usare Ansible
Ansible non è pensato per:
- Esecuzioni in tempo reale con latenza millisecondi
- Configurazioni estremamente dinamiche su singolo nodo
- Sostituire sistemi di monitoring
È uno strumento di automazione e gestione configurazione, non un sistema di controllo runtime continuo.
Conclusione
Ansible è uno strumento centrale nel toolkit di un sistemista moderno.
Permette di trasformare operazioni manuali in procedure automatizzate, ripetibili e versionabili, riducendo errori e aumentando la coerenza dell'infrastruttura.
Nel prossimo capitolo entreremo nella configurazione iniziale operativa dopo l’installazione.