Ansible

Manipuler brukbare data ved hjelp av Jinja-filtre

Manipuler brukbare data ved hjelp av Jinja-filtre

Ved noen anledninger, når du bruker Ansible til å automatisere ulike 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 filtermal er utført på Ansible-kontrolleren, og ikke på de angitte eksterne vertene. Dette bidrar til å redusere mengden data som overføres til den eksterne verten etter lokal behandling. Hvis du ikke er kjent med jinja-maler, er Jinja et enkelt, intuitivt, raskt og sikkert malspråk for Python-programmeringsspråket som er utviklet etter de populære Python-rammene Django-maler.

Vi kommer ikke inn på hvordan jinja templating fungerer, selv om det kan være en ekstra fordel å forstå hvordan det fungerer med maler.

Ta en titt på ressursen nedenfor for å lære mer om Jinja.

https: // linkfy.til / jinjaDocs

Hvordan Ansible Filters fungerer

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

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

https: // linkfy.til / AnsibleFilters

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

Den generelle syntaksen for filtrering av data er som følger:

|

Bruke Ansible Filters

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: Datafiltre med svarbart format

Datafiltrene for Ansible-format tar en utdatastruktur i en mal og bruker det spesifiserte filteret til å gjengi det i formatet som kalles i filteret.

Nedenfor er et eksempel på filter for å konvertere til JSON og YAML:

variabel | to_json
variabel | to_yaml

Tenk for eksempel på følgende spillbok:

- verter: alle oppgaver:
- skall: katt / tmp / alt.json
register: resultat
- feilsøke:
msg: "result.stdout | to_nice_yaml "

Å kjøre spillboken over vil gi en utdata for JSON-dataene konvertert til YAML. Følgende er et eksempel på utdata:

Du kan også spesifisere andre filtre, for eksempel to_nice_yaml, for å få utdataene i et lesbart format.

variabel | to_nice_json
variabel | to_nice_yaml

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

For eksempel kan du sende parse YAML-strenger med flere dokumenter, som i spillboken nedenfor:

- verter: alle oppgaver:
- skall: katt / tmp / alt.json
register: resultat
- feilsøke:
msg: "result.stdout | til_yaml | liste"

Eksempel 2: Ansible standardfilter

Ansible-standardfilteret hjelper til med å standardverdier til udefinerte variabler. Standard Ansible-konfigurasjon mislykkes udefinerte variabler. Hvis du for eksempel har en udefinert variabel, kan du be Ansible om å være standard til en verdi i stedet for å heve en feil.

Den generelle syntaksen for standardfilteret er som følger:

| standardverdi)

For eksempel:

- verter: alle
vars:
oppgaver:
sett_fakt:
undef_var: "0_var | standard (5)"

Spillboken ovenfor vil sette verdien til variabelen '0_var' til 5 hvis den ikke er 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 ovenfor og erstatte standardverdien med det obligatoriske:

0_var | påbudt, bindende

Eksempel 3: Ansible feilsøkingsfiltre

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

variabel | type_debug

Eksempel 4: Matematiske filtre

Ansible matematikkfiltre lar deg utføre matematiske spørsmål. Disse filtrene inkluderer følgende:

  1. Logaritmefilter - variabel | log - angir basen til logaritmen i parentes som variabel | logg (2)
  2. Strømfilter - variabel | pow (3) - returnerer variabelen hevet til den angitte effekten
  3. Absolutt filter - variabel | abs - returnerer den absolutte verdien for den passerte variabelen
  4. Rotfilter - variabel | root - dette returnerer variabelens kvadratrot. For å spesifisere roten, legg verdien i parentes; for eksempel kubarot variabel | rot (3)

Disse mattefiltrene kan være ganske nyttige, spesielt når du arbeider med store datamengder og umiddelbare matematiske operasjoner.

Eksempel 5: Hash-filtre

Ansible hash-filtre lar deg få hash for en streng eller overførte data. I de fleste tilfeller trenger du ikke disse filtrene, men de er tilgjengelige for bruk hvis behovet oppstår. Disse filtrene inkluderer følgende:

  1. Sha1 - var | hash (“sha1”)
  2. Sha256 / sha512 - var | password_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 er følgende:

  • URL-delt filter - “[E-postbeskyttet]: // linuxhint.com: 8080 / indeks.html?spørring = linux ”| urlspilt (“vertsnavn”), - returnerer “linuxhint.com ”
  • Bli med på listen - liste | delta - brukes til å legge til en liste i en strengvar
  • Katalogbane - sti | dirname
  • Utvid en tilde - sti | utvidbruker

Konklusjon

Ansible filtre er nyttige når du utfører feilsøkingsoppgaver eller trenger spesifikk informasjon uten å skrive for mye. Fordi Ansible støtter tilpassede filtre, kan disse filtrene være spesielt nyttige i spesifikke bruksområder.

Beste spillkonsollemulatorer for Linux
Denne artikkelen vil liste opp populære programvare for spillkonsollemulering tilgjengelig for Linux. Emulation er et programvarekompatibilitetslag so...
Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...
Hvordan fange opp og streame spilløkten din på Linux
Tidligere ble spill bare ansett som en hobby, men med tiden så spillindustrien en enorm vekst når det gjelder teknologi og antall spillere. Spillpubli...