Quando cerchi flessibilità, la funzione variabile extra di Ansible è la risposta migliore per la maggior parte di queste soluzioni.
Ad esempio, crei un playbook Ansible che viene eseguito su un set specifico di host che li sceglie in base all’appartenenza ad un gruppo chiamato: webgroup.
Sfortunatamente, il team operativo deve eseguire questo playbook su un diverso gruppo di host chiamato appgroup. A questo punto bisogna modificare il playbook.
Qual è un metodo migliore per risolvere questo problema?
L’uso del parametro:
--extra-vars
e la modifica del playbook di Ansible per accettare una variabile (ad es. Nodi) quando si dichiarano i propri host. Il seguente esempio lo illustra:
hosts: "{{ nodi }}" vars_files:
vars/main.yml
roles:
{ role: geerlingguy.apache }
Per passare un valore ai nodi, usa l’opzione –extra-vars oppure -e durante l’esecuzione del playbook Ansible, come mostrato di seguito.
ansible-playbook myplaybook.yaml --extra-vars "nodi=webgroup"
Mentre per un altro gruppo di host
ansible-playbook myplaybook.yaml --extra-vars "nodi=webgroup"
Ciò garantisce anche di evitare l’esecuzione accidentale del playbook su host non desiderati.
I ruoli Ansible sono una raccolta di modelli, file, variabili, moduli, gestori e attività creati allo scopo di semplificare il riutilizzo del codice Ansible.
All’interno di una struttura di directory dei ruoli Ansible, avrai due tipi di variabili all’interno delle seguenti directory:
defaults/main.yml – contiene variabili per un ruolo che possono essere personalizzate in base all’utilizzo desiderato del ruolo.
vars/main.yml – contiene variabili per un ruolo che non devono essere modificate.
Siccome –extra-vars ha una precedenza maggiore rispetto a vars/main.yml, le variabili possono essere modificate utilizzando il parametro –extra-vars. Le variabili modificabili dovrebbero risiedere in defaults/main.yml
Ad esempio, utilizzando una porta diversa per Apache come di seguito (supponendo che le variabili siano definite all’interno di defaults/main.yml):
ansible-playbook deploy-apache.yaml --extra-vars "apache_listen_port=8080"
Tratto da https://www.redhat.com/sysadmin/extra-variables-ansible-playbook.
Lascia un commento