GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare le variabili in Ansible Playbook

Se hai programmato in Python, Java, C, C++ o in qualsiasi altro linguaggio di programmazione, le variabili non sono estranee. Proprio come nei linguaggi di programmazione, le variabili in Ansible vengono utilizzate per memorizzare un valore.

In Ansible, le variabili forniscono la necessaria flessibilità in Playbook, modelli e inventari, come vedremo più avanti in questo tutorial. Le variabili integrate possono essere utilizzate per fornire informazioni di sistema come nome host, architettura del sistema, interfacce, ecc. Le variabili possono anche essere utilizzate per sostituire stringhe e anche in loop per scorrere un determinato insieme di valori.

Un nome di variabile valido è composto dai seguenti caratteri

  • Lettere
  • Numeri
  • Punti bassi
  • Una combinazione di due o tutti i precedenti

Una variabile DEVE INIZIARE SEMPRE CON UNA LETTERA  e NON DEVE CONTENERE ALCUN SPAZIO.

Esempi di nomi di variabili accettabili includono:

  •  giradischi
  •  tavola_girevole
  •  giradischi01
  •  giradischi_01

I nomi seguenti non si qualificano come nomi di variabili validi

  •  piattaforma girevole
  •  piattaforma girevole
  •  01giradischi
  •  01

Diamo ora un'occhiata ai diversi casi d'uso delle variabili in Ansible

Variabili nei Playbook

Come sai, un playbook è una raccolta di riproduzioni o attività da eseguire su un sistema remoto. Nei playbook, le variabili sono utili per determinare come eseguire le attività. Assegnare un valore a una variabile in un playbook è abbastanza facile e diretto.

Inizia chiamando i vars parola chiave quindi chiama il nome della variabile seguito dal valore come mostrato.

---
 - hosts: all
   vars:
     salutations: Hello guys!
   tasks:
   - name: Ansible Variable Basic Usage
       debug:
       msg: "{{ salutations }}"

Nel playbook sopra, il nome della variabile è  saluti e il valore è Ciao mondo! Quando il playbook viene eseguito, si accede al valore del playbook inserendo la variabile tra parentesi graffe come mostrato sopra. Quando viene eseguito, il playbook stampa il messaggio "Ciao ragazzi ' sul terminale.

Variabili con array

Puoi utilizzare gli array e assegnarli a variabili come mostrato nella sintassi seguente:

varianti:

nome array:

– valore1

– valore2

Ad esempio, il playbook seguente contiene una matrice di 5 nomi di studenti memorizzati in una variabile chiamata studenti. Puoi accedere ai nomi degli studenti tramite l'indicizzazione (come faresti con gli array in qualsiasi altro linguaggio di programmazione)  Ad esempio, per recuperare il nome "Arthur" dall'elenco di array, utilizza la sintassi studenti [2] come mostrato di seguito.

- hosts: all
  vars:
    students:
      - Mark
      - Melisa
      - Arthur
      - Kevin
      - Lisa

  tasks:
  - name: Ansible List variable Example
    debug:
      msg: "{{ students[2] }}"

Variabili con dizionari

Dall'elenco Array, puoi definire ulteriormente ciascuna delle voci utilizzando una coppia di valori chiave che forma ciò che chiamiamo un elenco di dizionari. La sintassi è mostrata di seguito

varianti:

nome array:

nome_dizionario1:

valore1:valoreoggetto1

valore2:valoreoggetto2

nome_dizionario2:

valore1:valoreoggetto1

valore2:valoreoggetto2

Utilizzando il nostro esempio precedente, possiamo avere elenchi di dizionari di seguito

- hosts: all
  vars:
    students:
         - Mark: 
             city: Melbourne
             address: 0045-0987-8642
         - Angela: 
             city: Sydney
             address: 3456-7685-9087

Per accedere al dizionario, aggiungi semplicemente l'attività qui sotto

  tasks:
    - debug:
        var: students

Variabili nei file di inventario

Se hai diversi sistemi host che condividono attributi o valori simili, puoi definire quelle che chiamiamo variabili di gruppo. Questi vengono utilizzati per assegnare gli attributi comuni a tutti gli host.

Ad esempio:

Supponiamo di avere 2 server web:webserver_1 e server web_2 che stanno entrambi ascoltando la porta 443 e il cui server ntp è us.pool.ntp.org. Il file di inventario apparirà come mostrato:

[web_servers]
webserver_1
webserver_2

[web_servers:vars]
http_port=443
ntp_server=us.pool.ntp.org

Nel file del playbook YAML, questo sarebbe rappresentato come mostrato

   web_servers:
     hosts:
       web_server_1:
       web_server_2:
         
         vars:
           http_port=80
           ntp_server=us.pool.ntp.org

La prima sezione definisce gli host remoti che sono webserver_1 e server web_1 , mentre la seconda sezione raggruppa gli attributi comuni tra i due server. Questo è un metodo molto conveniente per applicare variabili comuni a più sistemi host.

Variabili host e di gruppo

Sebbene tu possa specificare le variabili nel file di inventario, la pratica standard sconsiglia di memorizzare le variabili nel file di inventario. È qui che entrano in gioco i file delle variabili host e di gruppo.

In un file di variabile host, la variabile si applica solo a un sistema host nel file di inventario. Il file della variabile host è solitamente archiviato in host_vars directory che di solito è specificata in /etc/ansible/ percorso.

Considera il file di inventario di seguito in cui abbiamo 2 server ciascuno che utilizza diversi server ntp

[web_servers]
webserver_1  ntp_server=uk.pool.ntp.org
webserver_2  ntp_server=de.pool.ntp.org

Invece di specificare la variabile ntp_server nel file di inventario, crea 2 file di variabili host nella directory host_vars con il nome del file corrispondente a ciascuno dei nomi host dei sistemi host:

# vim /etc/ansible/host_vars/webserver_1
---
ntp_server=uk.pool.ntp.org

# vim /etc/ansible/host_vars/webserver_2
---
ntp_server=de.pool.ntp.org

Se i sistemi host condividono gli stessi valori, crea un file di variabili di gruppo in  group_vars directory. Il nome del file della variabile di gruppo deve corrispondere al gruppo degli host

Considera il file di inventario di seguito

[web_servers]
webserver_1
webserver_2
[web_servers:vars]
ansible_user=root
ansible_port=22

La seconda sezione può essere definita come un file nella directory group_vars come mostrato. Dovrebbe essere nella directory /etc/ansible. Ricorda che il nome del file dovrebbe essere lo stesso del nome del gruppo.

# vim /etc/ansible/group_vars/web_servers
---
ansible_user=root
ansible_port=22

Qui, le variabili saranno accessibili a tutti gli host del gruppo chiamato web_servers.

Variabili speciali in Ansible Playbook

Un'altra categoria di variabili sono le variabili speciali. Si tratta di variabili integrate che non possono essere impostate dall'utente e che Ansible sovrascriverà sempre. Per ottenere un elenco di nomi di variabili di sistema univoci, eseguire il comando

# ansible -m imposta il nome host

Esempi di tali variabili speciali includono:

  • ansible_all_ipv4_addresses
  • architettura_ansible ,
  • ansible_bios_version ,
  • ansible_os_family ,
  • distribuzione_ansible,

Verrà visualizzato un output in formato JSON

# ansible -m setup localhost

Grazie alla flessibilità e alla facilità d'uso, le variabili hanno uno scopo fondamentale sia nei playbook che nei file di inventario. Evitano inutili ripetizioni e rendono la vita dell'amministratore di sistema molto più semplice.

Leggi anche: Come utilizzare i loop in Ansible Playbook

Leggi anche :Come utilizzare Ansible Vault per proteggere i dati sensibili


Linux
  1. Come utilizzo Ansible e anacron per l'automazione

  2. Come utilizzare Ansible per impostare il monitoraggio del sistema con Prometheus

  3. Come installare e utilizzare Ansible su Debian 11

  4. Come creare un Playbook Ansible

  5. Come installare pacchetti software con un playbook Ansible

Come creare e utilizzare fatti personalizzati in Ansible

Come utilizzare le variabili negli script della shell

Come definire e utilizzare i gestori in Ansible Playbook

Come utilizzare il modello Jinja2 in Ansible

Come usare Ansible per configurare Vim

Come utilizzare Ansible per inviare un'e-mail utilizzando Gmail