Ansible regex_search for å filtrere data

Ansible regex_search for å filtrere data

I dag skal vi oppdage et annet filter av Ansible -verktøyet som er Regex søkefilter. Vi skal oppdage hvordan Ansible's Regex -søkefunksjoner. Vi vil også utforske hvordan regex -søk kan være nyttig når du bruker Ansible for å finne en matchende streng eller karakter i Ansible Playbook.

I Ansible betyr reg-ex regelmessig uttrykk og søket er for å finne noe. Så Regex_search -filteret i Ansible er en slags kompleks skanning som søker spesielle sekvenser i stedet for spesielle ord og uttrykk. I stedet for å lage mange bokstavelige søkespørsmål, gjør Regex det mulig å finne en spesifikk karakterstreng ved hjelp av vanlige uttrykk. For å hente en bestemt sekvens, jobber Regex med et søk og metakaraktører. Regelmessig uttrykks grunnleggende bygningselementer er metakaraktører. Å finne noen spesifikke strenger som sikkerhetsnumre, lisensnumre, websider adresser, postadresser, registreringsnumre osv. Som passer inn i spesifikke sekvenser kan gjøres ved hjelp av vanlige uttrykk.

Parametre for regex_search

Parameteren er en unik type variabel som brukes av et hvilket som helst filter, plugin osv. Disse informasjonsbiter indikerer verdiene til parametrene som skal brukes til å utføre eller starte filteret. Nedenfor er de nødvendige og valgfrie parametrene som vi skal bruke mens vi bruker REGEX_SERACHH -filteret i Ansible Playbook.

Nødvendige parametere

Følgende er parametrene som kreves slik at vi kan finne mønsteret i en medfølgende streng.

Inngangsstreng: Vi tar innspill som en streng slik at vi kan finne mønsteret mot det.

Valgfrie parametere

Dette er parametrene som vi vil bruke hvis det er behov mens du søker etter et spesifikt mønster fra inngangsstrengen.

Regex streng: Regex er et vanlig uttrykk som inneholder en streng og spesifiserer matchende mønster mens du filtrerer.

Ignorecase: Det er en boolsk parameter. Hvis den vanlige uttrykkets streng er sann, vil den gjøre søket etter saken, og hvis det ikke er sant, vil den bli tvunget til å være case-ufølsom.

Multiline: Det er også en boolsk parameter for regex -søk i Ansible. Hvis skanningen er sant, vil søket over linjeavslutninger, og hvis den er falsk, vil den ikke søke over linjen slutter.

Forutsetninger for Ansible Filter Regex_search

Hvis du ønsker å fortsette i Regex -søket, vil vi anta at du oppfyller følgende forutsetninger som er gitt nedenfor:

  • Mens vi ønsker å jobbe i Ansible-verktøyet og ønsker å implementere Regex-søkefilteret, vil vi kreve at du må ha Ansible-relatert programvare på systemet ditt. For denne opplæringen bruker vi Ansible 2.12 eller en senere versjon.
  • For å utføre filteret på eksterne servere, trenger vi en kontroller, og her er Ansible Server hovedkontrolleren som konfigurerer REGEX -filteret i den lokale vertsserveren.

La oss bare dykke dypere inn i Regex søkefilter og sjekke hvordan Ansible setter det i kraft ved å bruke noen få situasjoner.

Eksempel 01: Matching av "Two" -strengen ved å bruke Regex søkefilter

Her er det aller første eksemplet der vi finner “to strengene fra prøvedokumentet som allerede var opprettet og inneholder noen strenger i det. Når vi ønsker å utføre filtre i Ansible, trenger vi en lekebok der vi skriver oppgavene. For å gjøre det, er følgende uttalelsen vi skal bruke for å lage spillboken i Ansible.

[root@master ansible]# nano regex_search.yml

Nå er spillboken initiert i Ansible sin nye terminal. La oss begynne å skrive de nødvendige uttalelsene i spillboken slik at vi kan kjøre filteret. Først skal vi skrive vertsenavnet der vi vil konfigurere Regex søkefilter. Vi bruker den lokale verten for å implementere filteret. Vi vil bare få de nødvendige dataene fra den lokale verten, så vi har falske faktaalternativ. I den første oppgaven fikk vi noen data fra prøven.TXT -dokument og lagret det deretter i "out" -variabelen som ble erklært ved å bruke registeralternativet til spillboken. Deretter feilsøker vi oppgaven slik at vi kan søke på "to" -strengen fra innholdet i utvariabelen og vise den på Ansible Console Terminal.

- Verter: Localhost
Samle_facts: FALSE
oppgaver:
- Navn: Lagre innholdet i prøven.txt i "out" -variabelen
Skall: katteprøve.tekst
Registrer deg: ut
- Navn: Vis innholdet i "out" -variabelen, matchende 'to'
Debug:
msg: "out.stdout | regex_search ('.*to.*', ignorecase = true) "

Neste trinn er å utføre følgende linje for å skaffe uttrykket som har strengen “to” i seg, etter å ha skrevet oppgavene for spillboken.

[root@master ansible]# Ansible-playbook regex_search.yml

Uttrykket fra utvariabelen som inneholder ordet “to” vises i utgangen ved å bruke REGEX -søkefilteret, som ble utført vellykket og kan sees med OK -signalet.

Eksempel 2: Vis strengen “Fil” fra den deklarerte variabelen i Ansible

Nå skal vi implementere det andre scenariet der vi ønsker å finne dataene fra den deklarerte variabelen i Ansible. Først vil vi igjen åpne spillboken:

[root@master ansible]# nano regex_searcg.yml

I dette eksemplet har vi erklært et variabelt navn “my_var”, og så har vi lagret innhold i variabelen. Nå ønsker vi å få den spesifikke strengen fra variabelen, så vi må definere oppgaven i spillboken. Som vist har vi også brukt valgfrie parametere for REGEX_SEARCH -filteret i feilsøkingsalternativet på slutten av spillboken. Disse parametrene er multiline og ignorekase -parameter som inneholder den "sanne" verdien.

- Verter: Localhost
Samle_facts: FALSE
vars:
My_Var: "Test First File \ ntest Second File \ ntest Third File"
oppgaver:
- Navn: Vis innholdet i "My_Var" -variabelen, matchende "fil"
Debug:
msg: "my_var | regex_findall ('.*fil.*', multiline = true, ignorEcase = true) "

Nå vil vi utføre spillboken og vise frem resultatene av spillboken i terminalen:

[root@master ansible]# Ansible-playbook regex_search.yml

Her er de ønskede resultatene vist nedenfor:

Konklusjon

Vi gikk i detalj om hva et Regex -søkefilter i Ansible er og hvordan du bruker filteret i Ansible Playbook og hva vi vil motta i retur. For å forstå Ansible Regex søkefilter ordentlig, benyttet vi noen få tilfeller.