Capitolo 7 – Ruoli, Variabili e Gestione Segreti Dopo aver imparato i playbook base, è fondamentale organizzare i progetti in modo modulare e sicuro. 7.1 Introduzione ai Ruoli I ruoli permettono di raggruppare tasks, file, template e variabili in moduli riutilizzabili. Struttura tipica di un ruolo nginx: roles/ └── nginx/ ├── tasks/ │ └── main.yml ├── templates/ │ └── nginx.conf.j2 ├── files/ ├── vars/ │ └── main.yml ├── defaults/ │ └── main.yml └── handlers/ └── main.yml tasks/main.yml → definisce le azioni principali handlers/main.yml → definisce azioni come restart servizi templates/ → file Jinja2 parametrizzati vars/ → variabili specifiche di ruolo defaults/ → variabili di default (può essere sovrascritte) 7.2 Creazione di un Ruolo Esempio: ansible-galaxy init nginx Questo comando genera automaticamente la struttura del ruolo. 7.3 Utilizzo dei Ruoli in un Playbook Esempio playbooks/web.yml: - name: Configurazione Web Server hosts: web become: true roles: - nginx Il ruolo viene eseguito con tutte le sue tasks, handlers, template e variabili. 7.4 Variabili Le variabili possono essere definite in diversi livelli di precedenza: Variabili host specifiche ( host_vars/host1.yml) Variabili di gruppo ( group_vars/web.yml) Variabili definite nel ruolo ( vars/main.yml) Variabili di default del ruolo ( defaults/main.yml) Variabili inline nel playbook Esempio group_vars/web.yml: http_port: 80 max_clients: 200 7.5 Gestione Segreti con Ansible Vault Ansible Vault permette di cifrare variabili sensibili come password o chiavi. Creazione file criptato: ansible-vault create group_vars/web/secrets.yml Esempio contenuto: db_password: "SuperSegreta123" Esecuzione playbook con Vault: ansible-playbook playbooks/web.yml --ask-vault-pass Modifica file criptato: ansible-vault edit group_vars/web/secrets.yml 7.6 Best Practice Ruoli e Variabili Separare configurazioni per ruolo Non hardcodare password nei playbook Usare nomi di variabili chiari e coerenti Riutilizzare ruoli comuni per diversi progetti Versionare tutto il progetto con Git (escludendo segreti se necessario) 7.7 Conclusione I ruoli, le variabili e la gestione dei segreti sono elementi fondamentali per strutturare progetti Ansible professionali. Permettono: Modularità Scalabilità Sicurezza Manutenzione più semplice Nei prossimi capitoli si può approfondire: Template Jinja2 Deploy applicativi completi Hardening e sicurezza avanzata Logging e troubleshooting