Ansible SelectAttr/RejectAttr

Ansible SelectAttr/RejectAttr

Jinja2 -filtrene er et utrolig sterkt verktøy som kan hjelpe oss med en rekke aktiviteter for å manipulere informasjon i Ansible. Basert på dette kommer vi til å diskutere Ansible SelectAttr og RejectAttr Jinja -filtre i denne artikkelen. Men før vi hopper videre til SelectAttr og RejectAttr, la oss først forstå hva rollen til filtre i Jinja2 er.

Hva er filtrene til Jinja2 i Ansible?

Når vi trenger informasjonshåndtering, strukturering og oversettelse, bruker vi Ansible. Jinja2 tilbyr flere forhåndsbygde filtre så vel som brukeropprettede tilpassbare filtre. Disse filtrene er Jinja2 -filtre som fungerer i backend, som transformerer den oppgitte informasjonen i et maluttrykk. De målrettede eksterne serverne er ikke involvert i templeringen, det finner sted på Ansible Controller System. Som et resultat brukes filtre på lokale data som Ansible Controller gir. I tillegg er Ansible's SelectAtt og RejectAtTR -filtre avledet fra disse filtrene.

SELECTATTR FILTER I ANSIBLE

SelectAtTr står for Select Attribute Filter. Hver valgte attributt brukes til å utføre testing på hvert objekt som er en definert attributt og bare plukke de som passerer testfiltrene, er en rekke elementer. Resultatet av SELECT -attributtet vil bli vurdert som en boolsk selv om ingen test er definert i Ansible. I Ansible SelectAtt -filteret sendes tre parametere i Ansible som er attributtet, en boolsk operatør og et argument. En av Jinjas innebygde testing kan velges som operatør.

Eksempel:

Her er et enkelt eksempel der vi skal bruke SelectAtt -filteret i Ansible. For å forstå hvordan det vil fungere i Ansible, skal vi implementere et scenario slik at vi skal forstå hvordan det vil fungere i Ansible. For å gjøre det, for det første, vil vi lage en spillbok fordi spillbøker er samlinger av instruksjoner som kjører over Target Remote -verter autonomt.

En Ansible Playbook har forskjellige moduler og hver modul utfører en viss funksjonalitet. Hver modul gir metadata som fastslår når, hvor, og som ekstern vert oppgaven blir utført. Følgende er kommandoen vi vil skrive i terminalen for å opprette en spillbok.

[root@master ansible]# nano ansible_filter.yml

For å lage spillboken skriver vi også utvidelsen av spillboken, som er YAML, eller enda et markeringsspråk, som er et filformat som bruker utvidelsen.yml. Nå lanseres spillboken i en ny Ansible -terminal med navnet Ansible_Filter.yml. I spillboken skriver vi først informasjonen om eksterne verter. I verter bruker vi localhost som en målsemålt vert.

Deretter har vi passert den "sanne" verdien til alternativet Samle_facts i spillboken, slik at vi kan få all informasjonen relatert til Localhost i utdataene. Etter å ha opprettet verten, vil vi nå lage en liste over hver oppgave vi har tenkt å fullføre. Det første oppgavenavnet er "alle miljøvariabler", og vi har passert variabelen i den slik at vi kan feilsøke den. I neste oppgave ønsker vi å aktivere filteret til Jinja2 som brukes i Ansible, som er SelectAtt -filteret. I SelectAtt -filteret har vi passert de tre argumentene som er nøkkelen, match og skallet.

- verter:
- lokal vert
Samle_facts: True
oppgaver:
- Navn: Alle miljøvariabler
Debug:
var: 'Ansible_facts.env '
- Navn: Filter aktivert
Debug:
MSG: "(Ansible_Facts.env | Dict2Items | SELECTATTR ('Key', 'Match', 'Shell')) | liste "

Etter å ha listet opp alle oppgavene, vil vi gjøre, vi avslutter spillboken ved å treffe Ctrl + X og deretter lagre oppdateringene. Nå, vi ønsker å utføre spillboken vi skal skrive kommandoen nedenfor i terminalen:

[root@master ansible]# ansible-playbook ansible_filter.yml

Her er det nødvendige utstillingsvinduet ved å bruke SelectAtt -attributtet i spillboken. Som du har sett, har vi fått en veldig lang produksjon fordi vi har brukt faktaalternativet som en sann i spillboken. Så det er grunnen til at den viser all informasjonen til Localhost i utdataene i Ansible Terminal.

Som vist, er Select -attributtet aktivert ved å vise OK -signalet på slutten av utgangsterminalen.

Avvise filter i Ansible

RejectAtTr står for avvisningsattributtet til Jinja2 i Ansible, og det er det motsatte av SelectAttr. RejectAtTr fjerner alle elementer fra den spesifiserte iterable som ikke tilfredsstiller det medfølgende attributtet og består testen med hell testen. Utfører testing på hvert elements gitt attributt, som en del av filtreringsprosessen, resulterer i avvisning av elementer som består testen. En boolsk evaluering av attributtets verdi vil finne sted hvis ingen test er gitt.

Eksempel:

Her er eksemplet som vi skal utføre ved å bruke en av de viktige attributtene til Jinja2 i Ansible, som er avvisningsattributtet. I dette eksemplet prøver vi å bruke en betingelse på hvert element i en ordbok for å eliminere matchede gjenstander fra ordboken. Så for det vil vi igjen lansere spillboken slik at vi kan endre oppgavene i henhold til avvisingsattributtet. Nedenfor er kommandoen for å starte modul_filter.YML Playbook:

[root@master ansible]# nano ansible_filter.yml

Nå, i lekeboken, har vi gitt det "falske" til faktaalternativet fordi vi ikke ønsker å få den ekstra informasjonen relatert til localhost, ettersom vi allerede har fått informasjonen i SelectAtTR -filtereksemplet. Nå vil vi skrive variabelen i spillboken. I varene må vi skrive navnet og medisinstypen. Deretter må vi skrive oppgaven. I oppgaven ønsker vi å filtrere alle medisinene bortsett fra stikkpiller, og vi feilsøker det ved å passere avvisningsfilteret i det.

- verter:
- lokal vert
Samle_facts: FALSE
vars:
medisiner:
- Navn: meslinger, type: injeksjoner
- Navn: Nepawell, type: Drops
- Navn: Colace, Type: Suppositories
oppgaver:
- Navn: Filtrer alle andre medisiner enn stikkpiller
Debug:
MSG: "(Medicines | RejectAttr ('Type', 'Match', 'Suppositories')) | List"

Nå vil vi avslutte spillboken. Etter det ønsker vi å kjøre lekeboken slik at vi kan få den passende utdata fra avvisningsattributtet til Ansible.

[root@master ansible]# ansible-playbook ansible_filter.yml

Her er resultatet av et avvikende attributt i Ansible Tool. Terminalen viser meslinger og nepawellmedisin, og den avviser Colace -medisinen fra spillboken.

Konklusjon

Vi har lært hva filtre er i jinja2 og hvilke filtre vi skal bruke i denne økten av Ansible. Vi har diskutert de to viktige filtrene som er SelectAtTr og RejectAttr -filtre i Ansible. Vi har implementert hvert eksempel på et filter slik at brukere enkelt kan forstå konseptene og arbeidet med disse filtrene i Ansible.