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 principalihandlers/main.yml→ definisce azioni come restart servizitemplates/→ file Jinja2 parametrizzativars/→ variabili specifiche di ruolodefaults/→ 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
No comments to display
No comments to display