Synlig

Manipuler anvendelige data ved hjælp af Jinja-filtre

Manipuler anvendelige data ved hjælp af Jinja-filtre

Ved nogle lejligheder, når du bruger Ansible til at automatisere forskellige opgaver, skal du muligvis transformere og manipulere data. I Ansible kan du bruge et sæt indbyggede filtre eller oprette brugerdefinerede filtre til at manipulere, behandle og konvertere data. Ansible bruger jinja2-skabelonfiltre i baggrunden for at give brugerne mulighed for at oprette filtre til specificerede data.

Det er vigtigt at bemærke, at filterskabeloner udføres på Ansible-controlleren og ikke på de angivne fjernværter. Dette hjælper med at reducere mængden af ​​data, der overføres til den eksterne vært efter lokal behandling. Hvis du ikke er bekendt med jinja-skabeloner, er Jinja et simpelt, intuitivt, hurtigt og sikkert skabelonsprog til Python-programmeringssproget udviklet efter de populære Python-ramme Django-skabeloner.

Vi kommer ikke ind på, hvordan jinja-skabeloner fungerer, selvom det kan være en ekstra fordel at forstå, hvordan det fungerer med skabeloner.

Tjek nedenstående ressource for at lære mere om Jinja.

https: // linkfy.til / jinjaDocs

Sådan fungerer følsomme filtre

Som nævnt bygger Ansible-filtermotoren på Jinja-skabelonmodellen. Dette giver brugerne mulighed for at bruge disse skabeloner til at indtaste data, behandle dem og levere et output baseret på de definerede filtre.

Når dataene er transformeret og filtreret ved hjælp af den definerede skabelon, kan du bruge dem til at udføre andre opgaver i Ansible. Du kan lære mere om filtre i Ansible på følgende websted:

https: // linkfy.til / AnsibleFilters

Ansible har mange filtre, som alle er meget nyttige og anvendelige til mange forskellige scenarier. Når du har fået filteroutputtet, kan du bruge det til at udføre andre opgaver, såsom fejlretning.

Den generelle syntaks til filtrering af data er som følger:

|

Brug af Ansible Filters

Vi vil nu se på eksempler på Ansible-filtre, som vi kan bruge til at udføre forskellige opgaver.

BEMÆRK: Som tidligere nævnt har Ansible mange filtre, så vi kan ikke dække dem alle i denne artikel. I stedet søger denne tutorial at give dig det grundlæggende i at bruge forskellige Ansible-filtre.

Eksempel 1: Datafiltre med svarbart format

Datafiltre i Ansible-format tager en outputdatastruktur i en skabelon og bruger det angivne filter til at gengive det i det format, der kaldes i filteret.

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

variabel | to_json
variabel | til_yaml

Overvej f.eks. Følgende playbook:

- værter: alle opgaver:
- skal: kat / tmp / alt.json
register: resultat
- fejlfinde:
msg: "result.stdout | to_nice_yaml "

Kørsel af ovenstående playbook producerer et output til JSON-data konverteret til YAML. Følgende er et eksempel på output:

Du kan også angive andre filtre, som to_nice_yaml, for at få output i et menneskeligt læsbart format.

variabel | to_nice_json
variabel | to_nice_yaml

Ved hjælp af formateringsdatafiltre kan du omdanne data til forskellige formater og bruge dem til forskellige opgaver.

For eksempel kan du videregive YAML-strenge med flere dokumenter, som i playbook nedenfor:

- værter: alle opgaver:
- skal: kat / tmp / alt.json
register: resultat
- fejlfinde:
msg: "result.stdout | til_yaml | liste"

Eksempel 2: Ansible standardfilter

Ansible-standardfilteret hjælper med at standardværdier til udefinerede variabler. Standard Ansible-konfigurationen mislykkes udefinerede variabler. For eksempel, hvis du har en udefineret variabel, kan du fortælle Ansible at standard til en værdi i stedet for at hæve en fejl.

Den generelle syntaks for standardfilteret er som følger:

| standard værdi)

For eksempel:

- værter: alle
vars:
opgaver:
sæt_fakt:
undef_var: "0_var | standard (5)"

Ovenstående playbook sætter værdien af ​​variablen '0_var' til 5, hvis den ikke er udtrykkeligt defineret, i stedet for at kaste en fejl.

For at definere en variabel kan du bruge det obligatoriske filter. Alt hvad du skal gøre er at henvise til eksemplet ovenfor og erstatte standard med det obligatoriske:

0_var | obligatorisk

Eksempel 3: Ansible fejlfindingsfiltre

Ved fejlretning kan du bruge filteret type_debug til at få oplysninger om variabeltypen. Den variable type vil være i Python, da motoren er Python-baseret. Den generelle syntaks for filteret er som følger:

variabel | type_debug

Eksempel 4: Matematiske filtre

Ansible matematiske filtre giver dig mulighed for at udføre matematiske relaterede forespørgsler. Disse filtre inkluderer følgende:

  1. Logaritmefilter - variabel | log - angiver logaritmens basis i parentes som variabel | log (2)
  2. Strømfilter - variabel | pow (3) - returnerer variablen hævet til den angivne effekt
  3. Absolut filter - variabel | abs - returnerer den absolutte værdi for den beståede variabel
  4. Rødfilter - variabel | root - dette returnerer variabelens kvadratrod. For eksplicit at angive roden skal du sende værdien i parentes; for eksempel terningsrod variabel | rod (3)

Disse matematiske filtre kan være ret nyttige, især når der er tale om store mængder data og øjeblikkelige matematiske operationer.

Eksempel 5: Hash-filtre

Ansible hash-filtre giver dig mulighed for at få hash af en streng eller videregivne data. I de fleste tilfælde har du ikke brug for disse filtre, men de er tilgængelige til brug, hvis behovet opstår. Disse filtre inkluderer følgende:

  1. Sha1 - var | hash (“sha1”)
  2. Sha256 / sha512 - var | password_hash (“sha256 / 512”)
  3. Md5 - var | hash (“md5”)
  4. Strengs kontrolsum - var | kontrolsum

Andre nyttige filtre

Som du måske har bemærket, har Ansible mange filtre. Nogle Ansible-filtre, som du måske finder nyttige, inkluderer følgende:

  • URL-opdelt filter - “[E-mail-beskyttet]: // linuxhint.com: 8080 / indeks.html?forespørgsel = linux ”| urlspilt (“hostname”), - returnerer “linuxhint.com ”
  • Tilmeld dig listen - liste | join - bruges til at tilføje en liste til en strengvar
  • Katalogsti - sti | dirname
  • Udvid en tilde - sti | udvidelsesbruger

Konklusion

Ansible filtre er nyttige, når du udfører fejlretningsopgaver eller har brug for specifik information uden for meget at skrive. Da Ansible understøtter brugerdefinerede filtre, kan disse filtre være særligt nyttige i specifikke brugssager.

Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...
Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...
Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...