Se gestisci più di tre server e stai ancora facendo SSH su ognuno per applicare le stesse modifiche, stai perdendo tempo che potresti dedicare ad attività più utili. Ansible è lo strumento che ha cambiato il mio modo di lavorare più di qualsiasi altro negli ultimi anni.
Perché Ansible e non altri strumenti
Ansible ha due caratteristiche che lo rendono perfetto per i team IT di dimensioni medie:
- Agentless: funziona via SSH, non serve installare nulla sui server gestiti
- YAML leggibile: un playbook ben scritto è documentazione, non solo codice
Puppet e Chef sono più potenti per ambienti enterprise grandi, ma hanno una curva di apprendimento molto più ripida. Per PMI e team fino a 10 persone, Ansible è la scelta giusta.
Installazione e primo inventario
pip install ansible
# oppure
apt install ansible
Crea il file di inventario hosts.ini:
[webservers]
web01 ansible_host=192.168.1.10
web02 ansible_host=192.168.1.11
[dbservers]
db01 ansible_host=192.168.1.20
[all:vars]
ansible_user=adminuser
ansible_ssh_private_key_file=~/.ssh/id_ed25519
Verifica la connettività con un ping ad-hoc:
ansible all -i hosts.ini -m ping
Il primo playbook: hardening base
Questo playbook applica le configurazioni SSH sicure su tutti i server:
---
- name: Hardening SSH base
hosts: all
become: true
tasks:
- name: Disabilita autenticazione password SSH
lineinfile:
path: /etc/ssh/sshd_config
regexp: "^PasswordAuthentication"
line: "PasswordAuthentication no"
notify: restart sshd
- name: Installa fail2ban
apt:
name: fail2ban
state: present
update_cache: yes
- name: Abilita fail2ban
service:
name: fail2ban
state: started
enabled: yes
handlers:
- name: restart sshd
service:
name: sshd
state: restarted
ansible-playbook -i hosts.ini hardening.yml
Idempotenza: il principio fondamentale
Ansible è idempotente: puoi eseguire lo stesso playbook cento volte e il risultato è sempre lo stesso. Se la configurazione è già corretta, Ansible non fa nulla. Questo lo rende sicuro da eseguire periodicamente come verifica della conformità.
Roles: strutturare playbook complessi
Quando i playbook crescono, usa i roles per organizzare il codice:
ansible-galaxy init roles/webserver
La struttura generata (tasks/, handlers/, templates/, vars/) permette di riutilizzare la configurazione su progetti diversi e di condividerla con il team.
Ansible Vault: gestire le credenziali in sicurezza
Non mettere mai password o chiavi API in chiaro nei playbook. Usa Ansible Vault:
ansible-vault create secrets.yml
ansible-playbook site.yml --ask-vault-pass
Dove iniziare: scegli un'operazione che ripeti ogni settimana (aggiornamenti, verifica servizi, rotazione log) e scrivici un playbook. Dopo il primo mese avrai automatizzato le attività più noiose della tua routine.
Posso aiutarti con la tua infrastruttura?
Che tu abbia un progetto da zero o un problema da risolvere, scrivimi o prenota una call gratuita di 30 minuti.