Ansible

Manipola i dati Ansible utilizzando i filtri Jinja

Manipola i dati Ansible utilizzando i filtri Jinja

In alcune occasioni, quando utilizzi Ansible per automatizzare varie attività, potresti dover trasformare e manipolare i dati. In Ansible, puoi utilizzare una serie di filtri integrati o creare filtri personalizzati per manipolare, elaborare e convertire i dati. Ansible utilizza i filtri 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 i modelli jinja, Jinja è un linguaggio di modelli semplice, intuitivo, veloce e sicuro per il linguaggio di programmazione Python sviluppato dopo i popolari modelli Django del framework Python.

Non entreremo nel modo in cui funziona il template jinja, anche se può essere un ulteriore vantaggio capire come funziona con i template.

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

https://linkfy.to/jinjaDocs

Come funzionano i filtri Ansible

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

Una volta che i dati vengono trasformati e filtrati utilizzando il modello definito, puoi utilizzarlo per eseguire altre attività in Ansible. Puoi saperne di più sui filtri in Ansible nel seguente sito Web:

https://linkfy.a/AnsibleFilters

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

La sintassi generale per il filtraggio dei dati è la seguente:

|

Utilizzo dei filtri Ansible

Ora esamineremo esempi di filtri Ansible che possiamo utilizzare per eseguire varie attività.

NOTA: Come accennato in precedenza, Ansible ha molti filtri, quindi non possiamo trattarli 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 renderla nel formato chiamato nel filtro.

Di seguito è riportato un filtro di esempio da 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
- eseguire il 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:

Puoi anche 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 formattazione dei dati, puoi trasformare i dati in vari formati e utilizzarli per varie attività.

Ad esempio, puoi passare l'analisi di stringhe YAML multi-documento, come nel playbook di seguito:

- host: tutte le attività:
- shell: cat /tmp/all.json
registro: risultato
- eseguire il debug:
msg: "risultato.stdout | to_yaml | elenco"

Esempio 2: filtro predefinito Ansible

Il filtro predefinito di Ansible aiuta a impostare i valori predefiniti su variabili non definite. La configurazione predefinita di Ansible fallisce con variabili non definite. Ad esempio, se hai una variabile non definita, puoi dire ad Ansible di impostare un valore predefinito invece di generare un errore.

La sintassi generale per il filtro predefinito è la seguente:

| valore predefinito)

Per esempio:

- host: tutti
variabili:
compiti:
set_fatto:
undef_var: "0_var | default(5)"

Il playbook sopra imposterà il valore della variabile '0_var' su 5 se non esplicitamente definito, invece di generare un errore.

Per definire una variabile, puoi usare il filtro obbligatorio. Tutto quello che devi fare è fare riferimento all'esempio sopra e sostituire l'impostazione predefinita con l'obbligatorietà:

0_var | obbligatorio

Esempio 3: filtri di debug Ansible

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

variabile | type_debug

Esempio 4: filtri matematici

I filtri matematici di Ansible ti consentono di eseguire query relative alla matematica. Questi filtri includono quanto segue:

  1. Filtro logaritmo - variabile | log - specifica la base del logaritmo tra parentesi come variabile | registro (2)
  2. Filtro di potenza - variabile | pow(3) - restituisce la variabile elevata alla potenza specificata
  3. Filtro assoluto - variabile | abs - restituisce il valore assoluto per la variabile passata
  4. Filtro radice - variabile | root - restituisce la radice quadrata della variabile. Per specificare esplicitamente la radice, passa il valore tra parentesi; ad esempio, radice cubica variabile | radice (3)

Questi filtri matematici possono essere molto utili, soprattutto quando si ha a che fare con grandi quantità di dati e operazioni matematiche istantanee.

Esempio 5: filtri hash

I filtri hash di Ansible ti consentono di ottenere l'hash di una stringa o di dati passati. Nella maggior parte dei casi, non avrai bisogno di questi filtri, ma sono disponibili per l'uso in caso di 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 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 - “ [email protetta]://linuxhint.com:8080/indice.html?query=linux” | urlspilt("hostname"), - restituisce "linuxhint.com"
  • Iscriviti alla lista - lista | join - usato per aggiungere una lista in una stringa var
  • Percorso della directory - percorso | cognome
  • Espandi una tilde - percorso | espandi utente

Conclusione

I filtri Ansible sono utili quando si eseguono attività di debug o sono necessarie informazioni specifiche senza dover digitare troppo. Poiché Ansible supporta filtri personalizzati, questi filtri possono essere particolarmente utili in casi d'uso specifici.

I 5 migliori mouse per computer ergonomici per Linux
L'uso prolungato del computer provoca dolore al polso o alle dita?? Soffri di rigidità articolare e devi continuamente stringerti la mano? Senti un do...
Come modificare le impostazioni del mouse e del touchpad utilizzando Xinput in Linux
La maggior parte delle distribuzioni Linux viene fornita con la libreria "libinput" per impostazione predefinita per gestire gli eventi di input su un...
Rimappa i pulsanti del mouse in modo diverso per software diversi con X-Mouse Button Control
Forse hai bisogno di uno strumento che possa cambiare il controllo del tuo mouse con ogni applicazione che utilizzi. In questo caso, puoi provare un'a...