Manipulere skivible data ved hjelp av jinja -filtre

Manipulere skivible data ved hjelp av jinja -filtre

Ved noen anledninger, når du bruker Ansible for å automatisere forskjellige oppgaver, kan det hende du må transformere og manipulere data. I Ansible kan du bruke et sett med innebygde filtre eller lage tilpassede filtre for å manipulere, behandle og konvertere data. Ansible bruker Jinja2 -malfiltre i bakgrunnen for å tillate brukere å lage filtre for spesifiserte data.

Det er viktig å merke seg at filtertemplering utføres på Ansible -kontrolleren, og ikke på de spesifiserte eksterne vertene. Dette bidrar til å redusere mengden data som er overført til den eksterne verten etter lokal behandling. Hvis du ikke er kjent med Jinja Templating, er Jinja et enkelt, intuitivt, raskt og sikkert templerspråk for Python -programmeringsspråket som er utviklet etter det populære Python Framework Django -malene.

Vi vil ikke komme inn på hvordan Jinja Templating fungerer, selv om det kan være en ekstra fordel å forstå hvordan det fungerer med maler.

Sjekk ut ressursen som er gitt nedenfor for å lære mer om Jinja.

https: // linkfy.til/jinjadocs

Hvordan ansible filtre fungerer

Som nevnt bygger Ansible -filtreringsmotoren på Jinja Templating -modellen. Dette lar brukere bruke disse malene til å legge inn data, behandle dem og gi en utgang basert på de definerte filtrene.

Når dataene er transformert og filtrert ved hjelp av den definerte malen, kan du bruke dem til å utføre andre oppgaver i Ansible. Du kan lære mer om filtre i Ansible på følgende nettsted:

https: // linkfy.til/ansiblefilters

Ansible har mange filtre som alle er veldig nyttige og anvendelige for mange forskjellige scenarier. Når du har filterutgangen, kan du bruke den til å utføre andre oppgaver, for eksempel feilsøking.

Den generelle syntaks for filtreringsdata er som følger:

|

Ved hjelp av Ansible -filtre

Vi vil nå se på eksempler på Ansible -filtre som vi kan bruke til å utføre forskjellige oppgaver.

MERK: Som tidligere nevnt har Ansible mange filtre, så vi kan ikke dekke dem alle i denne artikkelen. I stedet søker denne opplæringen å gi deg det grunnleggende om å bruke forskjellige Ansible -filtre.

Eksempel 1: Ansible format Datafilter

Datafiltrene for Ansible Format tar en utgangsdatastruktur i en mal og bruker det spesifiserte filteret for å gjengi det i formatet som kalles i filteret.

Nedenfor er et eksempelfilter for å konvertere til JSON og YAML:

Variabel | to_json
Variabel | to_yaml

Tenk for eksempel følgende spillbok:

- Verter: Alle oppgaver:
- Shell: Cat /TMP /ALL.JSON
Register: Resultat
- Debug:
msg: "resultat.stdout | to_nice_yaml "

Å kjøre ovennevnte spillbok vil produsere en utdata for JSON -dataene som er konvertert til YAML. Følgende er et eksempelutgang:

Du kan også spesifisere andre filtre som TO_NICE_YAML, for å skaffe utgangen i et menneskelig lesbart format.

Variabel | to_nice_json
Variabel | to_nice_yaml

Ved hjelp av formatering av datafilter kan du transformere data til forskjellige formater og bruke dem til forskjellige oppgaver.

For eksempel kan du passere parse multi-document yaml-strenger, som i spillboken nedenfor:

- Verter: Alle oppgaver:
- Shell: Cat /TMP /ALL.JSON
Register: Resultat
- Debug:
msg: "resultat.stdout | to_yaml | liste"

Eksempel 2: Ansible standardfilter

Ansible standardfilter hjelper til med standardverdier til udefinerte variabler. Standard Ansible -konfigurasjon mislykkes udefinerte variabler. For eksempel, hvis du har en udefinert variabel, kan du fortelle at du mister en verdi i stedet for å øke en feil.

Den generelle syntaks for standardfilteret er som følger:

| standardverdi)

For eksempel:

- Verter: Alle
vars:
oppgaver:
set_fact:
undef_var: "0_var | standard (5)"

Ovennevnte spillbok vil angi verdien av variabelen '0_var' til 5 hvis ikke eksplisitt definert, i stedet for å kaste en feil.

For å definere en variabel, kan du bruke det obligatoriske filteret. Alt du trenger å gjøre er å referere til eksemplet over og erstatte standard med obligatorisk:

0_var | påbudt, bindende

Eksempel 3: Ansible feilsøkingsfilter

Når du feilsøker, kan du bruke Type_Debug -filteret for å få informasjon om variabel -typen. Variabel-typen vil være i Python, ettersom motoren er Python-basert. Den generelle syntaksen for filteret er som følger:

Variabel | type_debug

Eksempel 4: Matematikkfiltre

De ansible matematikkfiltrene lar deg utføre matematisk relaterte spørsmål. Disse filtrene inkluderer følgende:

  1. Logaritmefilter - Variabel | Log - Angir basen til logaritmen i parentes som variabel | logg (2)
  2. Kraftfilter - Variabel | POW (3) - Returnerer variabelen hevet til den spesifiserte kraften
  3. Absolutt filter - Variabel | ABS - Returnerer den absolutte verdien for den passerte variabelen
  4. Rotfilter - Variabel | root - dette returnerer variabelen kvadratrot. For eksplisitt å spesifisere roten, pass verdien i parenteser; For eksempel kubiskrot variabel | rot (3)

Disse matematikkfiltrene kan være ganske nyttige, spesielt når du arbeider med store datamengder og øyeblikkelig matematikkoperasjoner.

Eksempel 5: Hash -filtre

Ansible Hash -filtre lar deg skaffe hasj av en streng eller bestått data. I de fleste tilfeller trenger du ikke disse filtrene, men de er tilgjengelige å bruke hvis behovet oppstår. Disse filtrene inkluderer følgende:

  1. SHA1 - var | hash (“sha1”)
  2. SHA256/SHA512 - var | passord_hash (“sha256/512”)
  3. MD5 - var | Hash (“MD5”)
  4. Strengsjekksum - var | sjekksum

Andre nyttige filtre

Som du kanskje har lagt merke til, har Ansible mange filtre. Noen ansible filtre som du kan finne nyttige inkluderer følgende:

  • URL -delt filter - “Developer@https: // linuxhint.com: 8080/indeks.html?spørring = Linux ”| Returnerer "Linuxhint.com ”
  • Bli med på listen - liste | Bli med - brukes til å legge til en liste i en streng var
  • Katalogsti - bane | dirname
  • Utvid en tilde - bane | expandUser

Konklusjon

Ansible filtre kommer godt med når du utfører feilsøkingsoppgaver eller trenger spesifikk informasjon uten for mye skriving. Fordi Ansible støtter tilpassede filtre, kan disse filtrene være spesielt nyttige i spesifikke brukssaker.