GNU/Linux >> Linux Esercitazione >  >> Linux

RHCE Ansible Series #4:variabili Ansible, fatti e registri

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
Linux
  1. Come utilizzo Ansible e anacron per l'automazione

  2. Come installare e testare Ansible su Linux

  3. Come passare variabili extra a un playbook Ansible

  4. RHCE Ansible Series #8:Crittografia dei contenuti con Ansible Vault

  5. RHCE Ansible Series #7:Modelli Jinja2

Inventario Ansible e file di configurazione

Un'introduzione ai fatti Ansible

RHCE Ansible Series #2:Esecuzione di comandi ad hoc

RHCE Ansible Series #1:Saluta Ansible

RHCE Ansible Series #3:Ansible Playbook

RHCE Ansible Series #12:Risoluzione dei problemi di Ansible