Ansible

Manipulați datele Ansible utilizând filtrele Jinja

Manipulați datele Ansible utilizând filtrele Jinja

În unele ocazii, când utilizați Ansible pentru a automatiza diverse sarcini, poate fi necesar să transformați și să manipulați datele. În Ansible, puteți utiliza un set de filtre încorporate sau puteți crea filtre personalizate pentru a manipula, procesa și converti datele. Ansible folosește filtre șablon jinja2 în fundal pentru a permite utilizatorilor să creeze filtre pentru datele specificate.

Este important să rețineți că modelarea filtrelor se realizează pe controlerul Ansible și nu pe gazdele de la distanță specificate. Acest lucru ajută la reducerea cantității de date transferate către gazda la distanță după procesarea locală. Dacă nu sunteți familiarizați cu șablonarea jinja, Jinja este un limbaj de șablonare simplu, intuitiv, rapid și sigur pentru limbajul de programare Python dezvoltat după șabloanele populare Django cadru Python.

Nu vom intra în modul în care funcționează șablonarea jinja, deși poate fi un avantaj suplimentar să înțelegem cum funcționează cu șabloanele.

Consultați resursa furnizată mai jos pentru a afla mai multe despre Jinja.

https: // linkfy.către / jinjaDocs

Cum funcționează filtrele Ansible

După cum am menționat, motorul de filtrare Ansible se bazează pe modelul de modelare Jinja. Aceasta permite utilizatorilor să utilizeze aceste șabloane pentru a introduce date, a le prelucra și a furniza o ieșire pe baza filtrelor definite.

Odată ce datele sunt transformate și filtrate folosind șablonul definit, îl puteți folosi pentru a efectua alte sarcini în Ansible. Puteți afla mai multe despre filtre în Ansible pe următorul site web:

https: // linkfy.către / AnsibleFilters

Ansible are multe filtre care sunt toate foarte utile și aplicabile la multe scenarii diferite. După ce ați obținut filtrul, îl puteți folosi pentru a efectua alte sarcini, cum ar fi depanarea.

Sintaxa generală pentru filtrarea datelor este următoarea:

|

Utilizarea filtrelor Ansible

Vom analiza acum exemple de filtre Ansible pe care le putem folosi pentru a efectua diverse sarcini.

NOTĂ: După cum sa menționat anterior, Ansible are multe filtre, deci nu le putem acoperi pe toate în acest articol. În schimb, acest tutorial urmărește să vă ofere elementele de bază ale utilizării diferitelor filtre Ansible.

Exemplul 1: Filtre de date Ansible Format

Filtrele de date în format Ansible iau o structură de date de ieșire într-un șablon și utilizează filtrul specificat pentru al reda în formatul apelat în filtru.

Mai jos este un exemplu de filtru pentru a converti în JSON și YAML:

variabilă | to_json
variabilă | to_yaml

De exemplu, luați în considerare următorul manual:

- gazde: toate sarcinile:
- shell: cat / tmp / all.json
registru: rezultat
- depanare:
msg: "rezultat.stdout | to_nice_yaml "

Rularea manualului de mai sus va produce o ieșire pentru datele JSON convertite în YAML. Următorul este un exemplu de ieșire:

De asemenea, puteți specifica alte filtre, cum ar fi to_nice_yaml, pentru a obține ieșirea într-un format lizibil de către om.

variabilă | to_nice_json
variabilă | to_nice_yaml

Folosind filtrele de date de formatare, puteți transforma datele în diferite formate și le puteți utiliza pentru diferite sarcini.

De exemplu, puteți trece analiza șirurilor YAML cu mai multe documente, ca în manualul de mai jos:

- gazde: toate sarcinile:
- shell: cat / tmp / all.json
registru: rezultat
- depanare:
msg: "rezultat.stdout | to_yaml | listă"

Exemplul 2: Filtru implicit Ansible

Filtrul implicit Ansible ajută la valorile implicite ale variabilelor nedefinite. Configurarea implicită Ansible eșuează variabile nedefinite. De exemplu, dacă aveți o variabilă nedefinită, îi puteți spune lui Ansible să stabilească implicit o valoare în loc să ridice o eroare.

Sintaxa generală pentru filtrul implicit este următoarea:

| valoare implicită)

De exemplu:

- gazde: toate
vars:
sarcini:
set_fact:
undef_var: "0_var | implicit (5)"

Playbook-ul de mai sus va seta valoarea variabilei „0_var” la 5 dacă nu este definită explicit, în loc să arunce o eroare.

Pentru a defini o variabilă, puteți utiliza filtrul obligatoriu. Tot ce trebuie să faceți este să consultați exemplul de mai sus și să înlocuiți valoarea implicită cu cea obligatorie:

0_var | obligatoriu

Exemplul 3: Filtre de depanare Ansible

La depanare, puteți utiliza filtrul type_debug pentru a obține informații despre tipul de variabilă. Tipul variabil va fi în Python, deoarece motorul este bazat pe Python. Sintaxa generală a filtrului este următoarea:

variabilă | type_debug

Exemplul 4: Filtre matematice

Filtrele matematice Ansible vă permit să efectuați interogări legate de matematică. Aceste filtre includ următoarele:

  1. Filtru logaritm - variabilă | jurnal - specifică baza logaritmului între paranteze ca variabilă | jurnal (2)
  2. Filtru de putere - variabilă | pow (3) - returnează variabila ridicată la puterea specificată
  3. Filtru absolut - variabilă | abs - returnează valoarea absolută pentru variabila trecută
  4. Filtru rădăcină - variabilă | rădăcină - aceasta returnează rădăcina pătrată a variabilei. Pentru a specifica în mod explicit rădăcina, treceți valoarea între paranteze; de exemplu, rădăcină cub variabilă | rădăcină (3)

Aceste filtre matematice pot fi destul de utile, mai ales atunci când avem de-a face cu cantități mari de date și operații de matematică instantanee.

Exemplul 5: Filtre Hash

Filtrele de hash Ansible vă permit să obțineți hashul unui șir sau al datelor transmise. În majoritatea cazurilor, nu veți avea nevoie de aceste filtre, dar acestea sunt disponibile pentru a fi utilizate dacă apare nevoia. Aceste filtre includ următoarele:

  1. Sha1 - var | hash („sha1”)
  2. Sha256 / sha512 - var | password_hash („sha256 / 512”)
  3. Md5 - var | hash („md5”)
  4. Suma de control a șirurilor - var | suma de control

Alte filtre utile

După cum probabil ați observat, Ansible are multe filtre. Unele filtre Ansible pe care le puteți găsi utile includ următoarele:

  • Filtru de divizare URL - “[Email protected]: // linuxhint.com: 8080 / index.html?interogare = linux ”| urlspilt („hostname”), - returnează „linuxhint.com ”
  • Lista de înscrieri - listă | join - folosit pentru a adăuga o listă într-un șir var
  • Calea catre director - cale | dirname
  • Extindeți o tildă - cale | expanduser

Concluzie

Filtrele Ansible sunt la îndemână atunci când efectuați sarcini de depanare sau aveți nevoie de informații specifice fără a scrie prea mult. Deoarece Ansible acceptă filtre personalizate, aceste filtre pot fi utile în special în cazuri de utilizare specifice.

Top 5 produse ergonomice pentru mouse de calculator pentru Linux
Utilizarea prelungită a computerului vă provoacă dureri la încheietura mâinii sau la degete? Suferați de articulații rigide și trebuie să vă dați mâin...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...