Manipolare i dati ansible utilizzando i filtri jinja

Manipolare i dati ansible utilizzando i filtri jinja

In alcune occasioni, quando si utilizza Ansible per automatizzare varie attività, potrebbe essere necessario trasformare e manipolare i dati. In Ansible, è possibile utilizzare una serie di filtri integrati o creare filtri personalizzati per manipolare, elaborare e convertire i dati. Ansible utilizza i filtri del modello Jinja2 in background per consentire agli utenti di creare filtri per dati specificati.

È importante notare che il modello di filtro viene eseguito sul controller Ansible e non sugli host remoti specificati. Ciò aiuta a ridurre la quantità di dati trasferiti all'host remoto dopo l'elaborazione locale. Se non hai familiarità con il modello di Jinja, Jinja è un linguaggio di modelli semplice, intuitivo, veloce e sicuro per il linguaggio di programmazione Python sviluppato dopo il popolare struttura Django Django Python.

Non entreremo nel funzionamento del modello di Jinja, anche se può essere un ulteriore vantaggio capire come funziona con i modelli.

Dai un'occhiata alla risorsa fornita di seguito per saperne di più su Jinja.

https: // linkfy.a/jinjadocs

Come funzionano i filtri ansible

Come accennato, il motore di filtraggio Ansible si basa sul modello di modelli di Jinja. Ciò consente agli utenti di utilizzare questi modelli per inserire i dati, elaborarli e fornire un output in base ai filtri definiti.

Una volta trasformati e filtrati i dati utilizzando il modello definito, è possibile utilizzarli per eseguire altre attività in Ansible. Puoi saperne di più sui filtri in Ansible sul seguente sito Web:

https: // linkfy.a/ansiblefilters

Ansible ha molti filtri che sono tutti molto utili e applicabili a molti scenari diversi. Una volta che hai l'output del filtro, puoi usarlo per eseguire altre attività, come il debug.

La sintassi generale per i dati di filtraggio è la seguente:

|

Utilizzando filtri Ansible

Guarderemo ora ad esempi di filtri Ansible che possiamo usare per svolgere varie attività.

NOTA: Come accennato in precedenza, Ansible ha molti filtri, quindi non possiamo coprirli tutti in questo articolo. Invece, questo tutorial cerca di fornirti le basi dell'utilizzo di vari filtri Ansible.

Esempio 1: filtri dati in formato ansible

I filtri di dati in formato Ansible prendono una struttura di dati di output in un modello e utilizzano il filtro specificato per renderlo nel formato chiamato nel filtro.

Di seguito è riportato un filtro di esempio per convertire in JSON e YAML:

variabile | to_json
variabile | to_yaml

Ad esempio, considera il seguente playbook:

- Host: tutte le attività:
- Shell: Cat /TMP /All.JSON
Registro: risultato
- debug:
msg: "risultato.stdout | to_nice_yaml "

L'esecuzione del playbook sopra produrrà un output per i dati JSON convertiti in YAML. Quello che segue è un output di esempio:

È inoltre possibile specificare altri filtri come TO_NICE_YAML, per ottenere l'output in un formato leggibile dall'uomo.

variabile | to_nice_json
variabile | to_nice_yaml

Utilizzando i filtri di dati di formattazione, è possibile trasformare i dati in vari formati e utilizzarli per varie attività.

Ad esempio, è possibile superare le stringhe Yaml multi-documentazione, come nel playbook qui sotto:

- Host: tutte le attività:
- Shell: Cat /TMP /All.JSON
Registro: risultato
- debug:
msg: "risultato.stdout | to_yaml | elenco"

Esempio 2: filtro predefinito ansible

Il filtro predefinito Ansible aiuta a valori predefiniti a variabili non definite. La configurazione ANSIBLE predefinita non riesce le variabili indefinite. Ad esempio, se si dispone di una variabile indefinita, puoi dire ad ansible a un valore predefinito a un valore invece di aumentare un errore.

La sintassi generale per il filtro predefinito è la seguente:

| valore di default)

Per esempio:

- Host: tutto
VAR:
compiti:
set_fact:
undef_var: "0_var | default (5)"

Il playbook sopra imposta il valore della variabile "0_var" su 5 se non esplicitamente definito, invece di lanciare un errore.

Per definire una variabile, è possibile utilizzare il filtro obbligatorio. Tutto quello che devi fare è fare riferimento all'esempio sopra e sostituire il valore predefinito con il obbligatorio:

0_var | obbligatorio

Esempio 3: filtri di debug Ansible

Durante il debug, è possibile utilizzare il filtro type_debug per ottenere informazioni sul tipo variabile. Il tipo variabile sarà in Python, poiché il motore è a base di Python. La sintassi generale per il filtro è la seguente:

variabile | type_debug

Esempio 4: filtri matematici

I filtri di matematica Ansible ti consentono di eseguire domande relative a matematica. Questi filtri includono quanto segue:

  1. Filtro logaritmo - variabile | log - Specifica la base del logaritmo nelle parentesi come variabile | log (2)
  2. Filtro di potenza - variabile | POW (3) - Restituisce la variabile aumentata alla potenza specificata
  3. Filtro assoluto - variabile | ABS - Restituisce il valore assoluto per la variabile passata
  4. Filtro radice - variabile | root - Questo restituisce la radice quadrata della variabile. Per specificare esplicitamente la radice, passare il valore tra parentesi; Ad esempio, Cube Root variabile | root (3)

Questi filtri matematici possono essere abbastanza utili, soprattutto quando si tratta di grandi quantità di dati e operazioni di matematica istantanea.

Esempio 5: filtri hash

I filtri hash Ansible consentono di ottenere l'hash di una stringa o passati dati. Nella maggior parte dei casi, non avrai bisogno di questi filtri, ma sono disponibili per l'uso se si presenta la necessità. Questi filtri includono quanto segue:

  1. Sha1 - var | Hash ("sha1")
  2. SHA256/SHA512 - var | password_hash ("sha256/512")
  3. MD5 - var | HASH ("MD5")
  4. Checksum di stringa - var | checksum

Altri filtri utili

Come avrai notato, Ansible ha molti filtri. Alcuni filtri ansible che potresti trovare utili includono quanto segue:

  • Filtro diviso URL - “Sviluppatore@https: // linuxhint.com: 8080/indice.html?Query = Linux ”| urlspilt ("nome host"), - restituisce "LinuxHint.com "
  • Elenco di join - Elenco | join - Utilizzato per aggiungere un elenco in una stringa var
  • Percorso di directory - Path | dirname
  • Espandi un tilde - Path | Expanduser

Conclusione

I filtri ansible sono utili quando si svolgono attività di debug o necessiti di informazioni specifiche senza troppa digitazione. Poiché Ansible supporta i filtri personalizzati, questi filtri possono essere particolarmente utili in casi d'uso specifici.