Come lavorare con Ansible Variables and Facts – Part 8

Abbiamo menzionato le variabili in questa serie Ansible e solo per fare un po ‘ di jogging. Una variabile, proprio come in molti linguaggi di programmazione, è essenzialmente una chiave che rappresenta un valore.

Cosa costituisce un nome di variabile valido?

Un nome di variabile include lettere, numeri, caratteri di sottolineatura o un mix di 2 o tutti. Tuttavia, tenere presente che un nome di variabile deve sempre iniziare con una lettera e non deve contenere spazi.

Diamo un’occhiata ad alcuni esempi di nomi di variabili validi e inaccettabili:

Esempi di nomi di variabili validi:

football foot_ballfootball20 foot_ball20

Esempi di nomi di variabili non validi:

foot ball20 foot-ball

Discutiamo i tipi di variabili:

Variabili Playbook

Le variabili Playbook sono abbastanza semplici e dirette. Per definire una variabile in un playbook, è sufficiente utilizzare la parola chiave vars prima di scrivere le variabili con indentazione.

Per accedere al valore della variabile, posizionarlo tra le parentesi graffe doppie racchiuse tra virgolette.

Ecco un semplice esempio di playbook:

- hosts: all vars: greeting: Hello world! tasks: - name: Ansible Basic Variable Example debug: msg: "{{ greeting }}"

Nel playbook sopra, la variabile di saluto viene sostituita dal valore Hello world! quando viene eseguito il playbook. Il playbook stampa semplicemente il messaggio Ciao mondo! quando eseguito.

Variabili Playbook in Ansible

Inoltre, puoi avere un elenco o una matrice di variabili come mostrato:

Il playbook sotto mostra una variabile chiamata continenti. La variabile contiene 5 diversi valori: i nomi dei continenti. È possibile accedere facilmente a ciascuno di questi valori utilizzando l’indice 0 come prima variabile.

L’esempio del playbook qui sotto recupera e visualizza Asia (Indice 1).

Array di variabili in Ansible

L’elenco delle variabili può essere strutturato in modo simile come mostrato:

vars: Continents: 

Per elencare tutti gli elementi dell’elenco, utilizzare il modulo with_items. Questo eseguirà il ciclo di tutti i valori nell’array.

Elenca le variabili Ansible Array

Un altro tipo di variabile Ansible è la variabile dictionary.

Le variabili del dizionario sono inoltre supportate nel playbook. Per definire la variabile dictionary, è sufficiente identificare la coppia chiave-valore appena sotto il nome della variabile dictionary.

hosts: switch_f01vars: http_port: 8080 default_gateway: 10.200.50.1 vlans: id: 10 port: 2

Nell’esempio precedente, vlan è la variabile del dizionario mentre id e port sono le coppie chiave-valore.

Per port_id, poiché stiamo iniziando il valore con il testo e non la variabile, le virgolette non sono necessarie per circondare le parentesi graffe.

Variabili speciali

Ansible fornisce un elenco di variabili predefinite a cui è possibile fare riferimento nei modelli Jinja2 e nei playbook ma che non possono essere modificate o definite dall’utente.

Collettivamente, l’elenco delle variabili predefinite Ansible viene indicato come fatti Ansible e questi vengono raccolti quando viene eseguito un playbook.

Per ottenere un elenco di tutti i Ansible variabili, utilizzare il modulo di setup in Ansible ad hoc comando, come illustrato di seguito:

# ansible -m setup hostname

Questo visualizza l’output in formato JSON come mostrato:

# ansible -m setup localhost
Elenco Ansible Variabili

Dall’uscita, possiamo vedere che alcuni degli esempi di Ansible variabili speciali includono:

Ci sono molti altri Ansible variabili speciali questi sono solo alcuni esempi.

Queste variabili possono essere utilizzate in un modello Jinja2 come mostrato:

Variabili di inventario

Infine, nell’elenco, abbiamo variabili di inventario Ansible. Un inventario è un file in formato INI che contiene tutti gli host da gestire da Ansible.

Negli inventari, è possibile assegnare una variabile a un sistema host e successivamente utilizzarla in un playbook.

web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=ubuntu http_port=8080

Quanto sopra può essere rappresentato in un file playbook YAML come mostrato:

--- web_servers: web_server_1: ansible_user=centos http_port=80web_server_2: ansible_user=ubuntu http_port=8080

Se i sistemi host condividono le stesse variabili, è possibile definire un altro gruppo nel file di inventario per renderlo meno ingombrante ed evitare ripetizioni inutili.

Per esempio:

web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=centos http_port=80

Quanto sopra può essere strutturato come:

web_server_1web_server_2ansible_user=centoshttp_port=80

E nel file playbook YAML, questo sarà definito come mostrato:

--- web_servers: hosts: web_server_1: web_server_2: vars: ansible_user=centos http_port=80

Ansible Facts

Quando si eseguono i playbook, la prima attività che Ansible esegue è l’esecuzione dell’attività di installazione. Sono abbastanza sicuro che devi aver incontrato l’output:

TASK: *********

I fatti Ansible non sono altro che proprietà di sistema o informazioni sui nodi remoti a cui si è connessi. Queste informazioni includono l’architettura del sistema, la versione del sistema operativo, le informazioni sul BIOS, l’ora e la data del sistema, l’uptime del sistema, l’indirizzo IP e le informazioni hardware per citarne solo alcune.

Per ottenere i fatti su qualsiasi sistema è sufficiente utilizzare il modulo di installazione come mostrato nel comando qui sotto:

# ansible -m setup hostname

Ad esempio:

# ansible -m setup database_server

Questo stampa un ampio set di dati in formato JSON come mostrato:

Ansible Get System Facts

Ansible facts è utile per aiutare gli amministratori di sistema a eseguire le operazioni, ad esempio, a seconda del sistema operativo, sono in grado di sapere quali pacchetti software devono essere installati e come devono essere configurati, ecc.

Fatti personalizzati

Sapevi anche che puoi creare i tuoi fatti personalizzati che possono essere raccolti da Ansible? Si ‘ che puoi. Quindi, come si fa a farlo? Cambiamo marcia e vediamo come.

Il primo passo è creare un /etc/ansible/facts.d directory sul nodo gestito o remoto.

All’interno di questa directory, creare un file con estensione .fact. Questo file restituirà i dati JSON quando il playbook viene eseguito sul nodo di controllo Ansible, che include gli altri fatti che Ansible recupera dopo l’esecuzione di un playbook.

Ecco un esempio di un file di fatto personalizzato chiamato date_time.fatto che recupera data e ora.

# mkdir -p /etc/ansible/facts.d# vim /etc/ansible/facts.d/date_time.fact

Aggiungi le seguenti righe.

#!/bin/bashDATE=`date`echo "{\"date\" : \"${DATE}\"}"

Salva ed esci dal file.

Ora assegna le autorizzazioni di esecuzione:

# chmod +x /etc/ansible/facts.d/date_time.fact

Ora, ho creato un playbook sul nodo di controllo Ansible chiamato check_date.yml.

---- hosts: webservers tasks: - name: Get custom facts debug: msg: The custom fact is {{ansible_local.date_time}}

Aggiunge il file fact alla variabile ansible_local. ansible_local memorizza tutti i fatti personalizzati.

Ora esegui il playbook e osserva Ansible recuperare le informazioni salvate sul file fact:

# ansible_playbook check_date.yml
Crea fatti personalizzati Ansible
Conclusione

Questo ci porta alla fine di questo tutorial su come lavorare con le variabili e i fatti Ansible.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Previous post STEPHEN SCHWARTZ-WICKED BUON COMPOSITORE
Next post 7 Modi in cui i tuoi figli potrebbero bypassare il software di controllo parentale