GNU/Linux >> Linux Esercitazione >  >> Linux

Come passare variabili extra a un playbook Ansible

Con Ansible, gli utenti hanno la flessibilità di accettare input esterni durante l'esecuzione dei loro playbook Ansible senza modificare il contenuto del playbook Ansible. Questo può essere fatto attraverso la possibilità di passare variabili extra a un playbook Ansible. Questa funzione è disponibile quando si utilizza Ansible CLI o Ansible Tower.

Perché variabili extra?

Perché dovrei passare variabili a un playbook Ansible quando posso dichiarare ogni variabile e valore nel playbook o nei file variabili? Questa è stata una domanda recente che ho ricevuto l'ultima volta che ho spiegato il concetto di utilizzare l'opzione extra vars in Ansible.

Le bugie di risposta diventano esplicite quando ti imbatti in scenari come il seguente:

  • Cosa farai quando vorrai cambiare il valore di una variabile? Modificare il playbook o il file variabile?
  • Cosa farai quando vorrai utilizzare valori diversi per una variabile ogni volta che esegui il playbook di Ansible?
  • Cosa farai quando vorrai utilizzare i valori per alcune variabili solo durante l'esecuzione del playbook?

Sebbene queste domande scalfino solo la superficie, diventa chiaro che quando cerchi flessibilità, Ansible extra la funzione variabile è la risposta migliore per la maggior parte di queste soluzioni. I seguenti casi d'uso spiegano come puoi utilizzare variabili aggiuntive per aggiungere flessibilità ai tuoi playbook Ansible.

L'hard-coding degli host è una cattiva idea

Ad esempio, crei un playbook Ansible che viene eseguito su un set specifico di host e imposta tali host su un gruppo denominato:webgroup. Quando completi il ​​test del playbook Ansible, lo abiliti per l'uso in produzione.

Sfortunatamente, il team operativo o gli ingegneri devono eseguire questo playbook su un diverso gruppo di host chiamato appgroup . Fissando in modo esplicito il nome del gruppo di host all'interno del playbook di Ansible, ne hai limitato la flessibilità richiedendo modifiche nel playbook di Ansible stesso.

Qual è un metodo migliore per risolvere questo problema?

L'uso del parametro --extra-vars e la modifica del playbook Ansible per accettare una variabile (ad es. Nodi) quando si dichiarano i propri host. L'esempio seguente lo illustra:

- hosts: "{{ nodes }}"
  vars_files:
    - vars/main.yml
  roles:
    - { role: geerlingguy.apache }

Per passare un valore a nodi , usa il --extra-vars o -e opzione durante l'esecuzione del playbook Ansible, come mostrato di seguito.

# ansible-playbook myplaybook.yaml --extra-vars "nodes=webgroup”

## Or

# ansible-playbook myplaybook.yaml --extra-vars "nodes=appgroup”

Ciò ti assicura di evitare l'esecuzione accidentale del playbook su host codificati. Se il playbook di Ansible non specifica gli host durante l'esecuzione, Ansible genererà un errore e si fermerà, dicendo nessun valore per i nodi .

Controllare le tue variabili dall'esterno dei ruoli Ansible

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:

  • default/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.

* A causa del fatto che --extra-vars ha una precedenza maggiore rispetto a vars/main.yml, le variabili possono essere modificate usando il parametro --extra-vars. Le variabili modificabili dovrebbero risiedere in defaults/main.yml

Puoi impostare i valori delle variabili utilizzando --extra-vars .

Ad esempio, utilizzando una porta diversa in un'installazione di 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”

Se hai più valori da trasmettere, prova questo:

# ansible-playbook deploy-apache.yaml --extra-vars “apache_listen_port=8080 apache_listen_port_ssl=443”

Come passare variabili contenenti spazi?

È necessario aggiungere virgolette ai valori stringa con spazi per passarli come variabili extra:

# ansible-playbook deploy-apache.yaml --extra-vars "apache_ssl_protocol='All -SSLv2 -SSLv3'"

Concludi

[ Hai bisogno di più su Ansible? Partecipa a un corso di panoramica tecnica gratuito di Red Hat. Ansible Essentials:Semplicità nell'automazione Panoramica tecnica. ]

Questo è solo un assaggio delle diverse opzioni su come passare le variabili a un playbook Ansible. Per ulteriori modi per trasferire variabili ai playbook Ansible, ad esempio utilizzando JSON e file di variabili esterne, consulta il sito della documentazione di Ansible.


Linux
  1. Decostruire un playbook Ansible

  2. Come creare un Playbook Ansible

  3. Come installare pacchetti software con un playbook Ansible

  4. Come impostare le variabili di ambiente Linux con Ansible

  5. come creare un playbook Ansible per ottenere le versioni del sistema operativo degli host remoti?

Come utilizzare i gestori in Ansible Playbook

Come creare ruoli Ansible e usarli in Playbook

Come creare playbook Ansible per l'automazione IT

Come definire e utilizzare i gestori in Ansible Playbook

Come creare ed eseguire file Ansible Playbook

Come usare Ansible per configurare Vim