Ansible

Manipulera användbara data med Jinja-filter

Manipulera användbara data med Jinja-filter

Vid vissa tillfällen, när du använder Ansible för att automatisera olika uppgifter, kan du behöva omvandla och manipulera data. I Ansible kan du använda en uppsättning inbyggda filter eller skapa anpassade filter för att manipulera, bearbeta och konvertera data. Ansible använder jinja2-mallfilter i bakgrunden så att användare kan skapa filter för specificerad data.

Det är viktigt att notera att filtermallning utförs på Ansible-styrenheten och inte på de angivna fjärrvärdarna. Detta hjälper till att minska mängden data som överförs till fjärrvärden efter lokal bearbetning. Om du inte känner till jinja-mallar är Jinja ett enkelt, intuitivt, snabbt och säkert mallningsspråk för Python-programmeringsspråket som utvecklats efter de populära Python-ramarna Django-mallarna.

Vi kommer inte att ta reda på hur jinja templating fungerar, men det kan vara en extra fördel att förstå hur det fungerar med mallar.

Kolla in resursen nedan för att lära dig mer om Jinja.

https: // linkfy.till / jinjaDocs

Hur Ansible Filters fungerar

Som nämnts bygger Ansible-filtreringsmotorn på Jinja-modelleringsmodellen. Detta tillåter användare att använda dessa mallar för att mata in data, bearbeta dem och tillhandahålla en utdata baserat på de definierade filtren.

När data har transformerats och filtrerats med den definierade mallen kan du använda den för att utföra andra uppgifter i Ansible. Du kan lära dig mer om filter i Ansible på följande webbplats:

https: // linkfy.till / AnsibleFilters

Ansible har många filter som alla är mycket användbara och tillämpliga på många olika scenarier. När du har fått filterutmatningen kan du använda den för att utföra andra uppgifter, till exempel felsökning.

Den allmänna syntaxen för filtrering av data är som följer:

|

Använda Ansible Filters

Vi kommer nu att titta på exempel på Ansible-filter som vi kan använda för att utföra olika uppgifter.

NOTERA: Som tidigare nämnts har Ansible många filter, så vi kan inte täcka dem alla i den här artikeln. Istället försöker denna handledning ge dig grunderna för att använda olika Ansible-filter.

Exempel 1: Datafilter för Ansible Format

Datafiltret Ansible format tar en utdatastruktur i en mall och använder det angivna filtret för att återge det i det format som kallas i filtret.

Nedan följer ett exempelfilter för att konvertera till JSON och YAML:

variabel | to_json
variabel | till_yaml

Tänk till exempel på följande spelbok:

- värdar: alla uppgifter:
- skal: katt / tmp / allt.json
registrera: resultat
- felsöka:
msg: "result.stdout | to_nice_yaml "

Att köra ovanstående spelbok ger en utdata för JSON-data som konverterats till YAML. Följande är ett exempel på utdata:

Du kan också ange andra filter, som to_nice_yaml, för att få utdata i ett läsbart format.

variabel | to_nice_json
variabel | to_nice_yaml

Med formateringsdatafiltret kan du omvandla data till olika format och använda den för olika uppgifter.

Till exempel kan du skicka YAML-strängar för flera dokument, som i spelboken nedan:

- värdar: alla uppgifter:
- skal: katt / tmp / allt.json
registrera: resultat
- felsöka:
msg: "result.stdout | till_yaml | lista"

Exempel 2: Ansible standardfilter

Ansible-standardfiltret hjälper till att standardvärdena för odefinierade variabler. Standardkonfigurationen Ansible misslyckas odefinierade variabler. Om du till exempel har en odefinierad variabel kan du be Ansible att standardvärde till ett värde istället för att höja ett fel.

Den allmänna syntaxen för standardfiltret är som följer:

| standardvärde)

Till exempel:

- värdar: alla
vars:
uppgifter:
set_fact:
undef_var: "0_var | standard (5)"

Ovanstående spelbok ställer in värdet på variabeln '0_var' till 5 om den inte uttryckligen definieras istället för att kasta ett fel.

För att definiera en variabel kan du använda det obligatoriska filtret. Allt du behöver göra är att hänvisa till exemplet ovan och ersätta standard med det obligatoriska:

0_var | obligatorisk

Exempel 3: Ansible Debug Filters

När du felsöker kan du använda filteret type_debug för att få information om variabeln. Den variabla typen kommer att finnas i Python, eftersom motorn är Python-baserad. Den allmänna syntaxen för filtret är som följer:

variabel | typ_debug

Exempel 4: Matematiska filter

Ansible matematiska filter gör att du kan utföra matematiska frågor. Dessa filter inkluderar följande:

  1. Logaritmfilter - variabel | log - anger logaritmens bas inom parentes som variabel | logg (2)
  2. Effektfilter - variabel | pow (3) - returnerar variabeln som höjs till den angivna effekten
  3. Absolut filter - variabel | abs - returnerar det absoluta värdet för den passerade variabeln
  4. Rotfilter - variabel | root - detta returnerar variabelns kvadratrot. För att specifikt ange roten, skicka värdet inom parentes; till exempel kubrot variabel | root (3)

Dessa matematiska filter kan vara ganska användbara, särskilt när man hanterar stora mängder data och omedelbara matematiska operationer.

Exempel 5: Hashfilter

Ansible-hashfiltret gör att du kan få hash för en sträng eller överförda data. I de flesta fall behöver du inte dessa filter, men de är tillgängliga för användning om behov uppstår. Dessa filter inkluderar följande:

  1. Sha1 - var | hash (“sha1”)
  2. Sha256 / sha512 - var | password_hash (“sha256 / 512”)
  3. Md5 - var | hash (“md5”)
  4. Strängkontrollsumma - var | kontrollsumma

Andra användbara filter

Som du kanske har märkt har Ansible många filter. Vissa Ansible-filter som du kan hitta användbara inkluderar följande:

  • URL-delat filter - “[E-postskyddad]: // linuxhint.com: 8080 / index.html?fråga = linux ”| urlspilt (“värdnamn”), - returnerar “linuxhint.com ”
  • Gå med i listan - lista | gå med - används för att lägga till en lista i en strängvariant
  • Katalogsökväg - sökväg | dirname
  • Expandera en tilde - sökväg | expanduser

Slutsats

Ansiktsfilter är till nytta när du utför felsökningsuppgifter eller behöver specifik information utan att skriva för mycket. Eftersom Ansible stöder anpassade filter kan dessa filter vara särskilt användbara i specifika användningsfall.

OpenTTD vs Simutrans
Att skapa din egen transportsimulering kan vara rolig, avkopplande och extremt lockande. Det är därför du måste se till att du testar så många spel so...
OpenTTD-handledning
OpenTTD är ett av de mest populära affärssimuleringsspelen där ute. I det här spelet måste du skapa en underbar transportaffär. Du kommer dock att bör...
SuperTuxKart för Linux
SuperTuxKart är en fantastisk titel som är utformad för att ge dig Mario Kart-upplevelsen gratis på ditt Linux-system. Det är ganska utmanande och rol...