Ansible - parte 3
Pubblicato il mar 21 maggio 2019 in tutorial • 2 min read
Continuando quanto detto nel precedente articolo analizziamo adesso alcune best practices
e la struttura di progetti più complessi.
Struttura di un progetto ansible
Progetti con molteplici playbooks possono essere organizzati nei modi più disparati. Tuttavia, un modo migliore per organizzare i playbooks è quello di raggruppare talune funzionalità nei cosidetti roles
o ruoli. Questo permette il riutilizzo delle funzionalità in diversi contesti ma anche la possibilità di condividere certi ruoli con altri utenti.
Una struttura delle directory potrebbe essere la seguente:
production.ini # includes the hosts
webservers.yml # playbook that makes use of one or more roles
roles/
common/ # a role directory
tasks/
main.yml
handlers/
main.yml
templates/
mysite.conf.j2
files/
favicon.ico
backup.sh
vars/
main.yml
defaults/
main.yml
meta/
main.yml
monitoring/ # another role directory
myapp/ # yet another role directory
...
Ciascun role
può contenere una o più sottodirectories, per esempio:
tasks
-- contiene una lista di tasks del ruolo.handlers
-- contiene gli handlers del ruolo (può essere usata anche al di fuori del relativo ruolo).defaults
-- contiene le variabili di default per il ruolo.vars
-- contiene altre variabili per il ruolo.files
-- contiene i files che verranno utilizzati dai task del ruolo.templates
-- contiene i templates da utilizzare.meta
-- definisce alcuni metadati per il ruolo come ad esempio le eventuali dipendenze.
A seconda del tipo di ruolo non tutte le directories sono richieste. Tuttavia, ciascuna directory che contribuisce alla logica dello script ansible deve
contenere un file main.yml
che verrà letto automaticamente.
L'opzione roles:
può essere usata per aggiungere diversi ruoli ad un playbook. Per esempio:
---
- hosts: webservers
roles:
- common
- myapp
L'uso dei ruoli permette di realizzare progetti piuttosto complessi. Ma questo esula dello scopo dei presenti articoli. Comunque si possono trovare tutte le informazionei relative ai roles
nella documentazione ufficiale.