Ci saranno sempre molte variazioni tra i tuoi sistemi gestiti. Per questo motivo, devi imparare a lavorare con le variabili Ansible.
In questo tutorial imparerai come definire e fare riferimento alle variabili Ansible. Imparerai anche come utilizzare Ansible fact per recuperare informazioni sui tuoi nodi gestiti.
Inoltre, imparerai anche come utilizzare i registri per acquisire l'output delle attività.
Se è la tua prima volta qui, dai un'occhiata ai capitoli precedenti di questa serie:
- Ansible RHCE #1:Introduzione e installazione
- Ansible RHCE #1:esecuzione di comandi ad hoc
- Ansible RHCE #1:Capire i playbook
Parte 1:Lavorare con le variabili in Ansible
Cominciamo prima con le variabili. Tieni presente che tutto questo è scritto nel tuo file YML.
Definizione e riferimento di variabili
Puoi utilizzare le vars parola chiave per definire le variabili direttamente all'interno di un playbook.
Ad esempio, puoi definire un fav_color variabile e impostarne il valore su giallo come segue:
---
- name: Working with variables
hosts: all
vars:
fav_color: yellow
Ora come usi (riferimento) il fav_color variabile? Ansible utilizza il sistema di modelli Jinja2 per lavorare con le variabili. Ci sarà un tutorial dedicato che discuterà di Jinja2 in questa serie, ma per ora devi solo conoscere le basi.
Per ottenere il valore del fav_color variabile; è necessario racchiuderlo tra un paio di parentesi graffe come segue:
My favorite color is {{ fav_color }}
Nota che se la tua variabile è il primo elemento (o l'unico elemento) nella riga, l'uso delle virgolette è obbligatorio come segue:
"{{ fav_color }} is my favorite color."
Ora scriviamo un playbook chiamato variables-playbook.yml che mette insieme tutto questo:
[[email protected] plays]$ cat variables-playbook.yml
---
- name: Working with variables
hosts: node1
vars:
fav_color: yellow
tasks:
- name: Show me fav_color value
debug:
msg: My favorite color is {{ fav_color }}.
Ho usato il debug modulo insieme al msg opzione del modulo per stampare il valore di fav_color variabile.
Ora esegui il playbook e vedrai il tuo colore preferito visualizzato come segue:
[[email protected] plays]$ ansible-playbook variables-playbook.yml
PLAY [Working with variables] **************************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Show me fav_color value] *************************************************
ok: [node1] => {
"msg": "My favorite color is yellow."
}
PLAY RECAP *********************************************************************
node1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Creazione di elenchi e dizionari
È inoltre possibile utilizzare elenchi e dizionari per definire variabili multivalore. Ad esempio, puoi definire un elenco denominato port_nums e impostarne il valore come segue:
vars:
port_nums: [21,22,23,25,80,443]
Potresti anche utilizzare il seguente modo per definire port_nums che è equivalente:
vars:
port_nums:
- 21
- 22
- 23
- 25
- 80
- 443
Puoi stampare tutti i valori in port_nums come segue:
All the ports {{ port_nums }}
Puoi anche accedere a un elemento specifico dell'elenco:
First port is {{ port_nums[0] }}
Si noti che si utilizza un indice (posizione) per accedere agli elementi dell'elenco.
Puoi anche definire un dizionario denominato utenti come segue:
vars:
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
Esistono due modi diversi per accedere agli elementi del dizionario:
- dict_name['key'] -> users['bob']['shell']
- dict_name.key -> users.bob.shell
Nota che usi una chiave per accedere agli elementi del dizionario.
Ora puoi modificare variables-playbook.yml playbook per mostrare elenchi e dizionari in azione:
[[email protected] plays]$ cat variables-playbook.yml
---
- name: Working with variables
hosts: node1
vars:
port_nums: [21,22,23,25,80,443]
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
tasks:
- name: Show 2nd item in port_nums
debug:
msg: SSH port is {{ port_nums[1] }}
- name: Show the uid of bob
debug:
msg: UID of bob is {{ users.bob.uid }}
Ora puoi eseguire il playbook per visualizzare il secondo elemento in port_nums e mostra l'uid di bob:
[[email protected] plays]$ ansible-playbook variables-playbook.yml
PLAY [Working with variables] **************************************************
TASK [Show 2nd item in port_nums] **********************************************
ok: [node1] => {
"msg": "SSH port is 22"
}
TASK [Show the uid of bob] *****************************************************
ok: [node1] => {
"msg": "UID of bob is 1122"
}
Incluse variabili esterne
Proprio come puoi importare (o includere) attività in un playbook. Puoi fare la stessa cosa anche con le variabili. Cioè, in un playbook, puoi includere variabili definite in un file esterno.
Per dimostrare, creiamo un file chiamato myvars.yml che contiene i nostri port_nums elenco e utenti dizionario:
[[email protected] plays]$ cat myvars.yml
---
port_nums: [21,22,23,25,80,443]
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
Leggi la storia completa
Il resto dell'articolo è disponibile solo per i membri LHB. Puoi iscriverti ora GRATUITAMENTE per leggere il resto di questo articolo insieme all'accesso a tutti i post riservati ai membri. Ti iscrivi anche alla nostra newsletter quindicinale Linux.
IscrivitiHai già un account?Accedi