Ansible regex_search per filtrare i dati

Ansible regex_search per filtrare i dati

Oggi scopriremo un altro filtro dello strumento Ansible che è il filtro di ricerca Regex. Scopriremo come funziona la ricerca di regex di Ansible. Esploreremo anche come la ricerca Regex potrebbe essere utile quando si utilizza Ansible per trovare una stringa o un carattere corrispondente nel playbook Ansible.

In Ansible, Reg-ex significa un'espressione regolare e la ricerca significa trovare qualcosa. Quindi, il filtro regex_search in Ansible è una sorta di scansione complessa che cerca sequenze particolari piuttosto che parole e frasi particolari. Invece di creare molte query di ricerca letterale, Regex consente di trovare una stringa di caratteri specifica usando espressioni regolari. Per recuperare una sequenza particolare, Regex funziona con una query di ricerca e metacharacters. Gli elementi di costruzione fondamentali dell'espressione regolare sono metacharacter. Trovare alcune stringhe specifiche come numeri di sicurezza, numeri di licenza, indirizzi per pagine Web, indirizzi postali, numeri di registrazione, ecc. Che si adattano a sequenze specifiche possono essere eseguite utilizzando espressioni regolari.

Parametri di regex_search

Il parametro è un tipo univoco di variabile che viene utilizzato da qualsiasi filtro, plug -in, ecc. Per essere relativi a un bit di dati specifici forniti al filtro come valore di input in AnSible. Questi blocchi di informazioni indicano i valori dei parametri che verranno utilizzati per eseguire o avviare il filtro. Di seguito sono riportati i parametri richiesti e opzionali che useremo durante l'utilizzo del filtro Regex_Serachh nel playbook Ansible.

Parametri richiesti

I seguenti sono i parametri richiesti in modo da poter trovare il modello in una stringa fornita.

Stringa di input: Faremo input come stringa in modo da poter trovare il modello contro di esso.

Parametri opzionali

Questi sono i parametri che useremo se è necessario mentre cerchi un modello specifico dalla stringa di input.

Regex string: Regex è un'espressione regolare che contiene una stringa e specifica il modello di corrispondenza durante il filtraggio.

Ignorecase: È un parametro booleano. Se la stringa di espressione regolare è vera, renderà il caso sensibile alla ricerca e se non è vero, sarà costretto ad essere insensibile al caso.

Multiline: È anche un parametro booleano della ricerca Regex in Ansible. Se la scansione è vera, le finali di ricerca su linea e se è falsa, non cercherà la fine della linea.

Prerequisiti del filtro Ansible regex_search

Se desideri andare avanti nella ricerca Regex, supponiamo di incontrare i seguenti prerequisiti che sono indicati di seguito:

  • Mentre vogliamo lavorare nello strumento Ansible e vogliamo implementare il filtro di ricerca Regex, richiederemo che tu debba avere un software relativo a Ansible sul sistema. Per questo tutorial, stiamo usando Ansible 2.12 o una versione successiva.
  • Per eseguire il filtro su server remoti quindi abbiamo bisogno di un controller e qui il server Ansible è il controller principale che configura il filtro Regex nel server host locale.

Approfondiamo il filtro di ricerca Regex e controlliamo come Ansible lo mette in vigore usando alcune situazioni.

Esempio 01: abbinamento della stringa "due" utilizzando il filtro di ricerca regex

Ecco il primo esempio in cui troveremo le "due stringhe dal documento di esempio già creato e contiene alcune stringhe in esso. Quando vogliamo eseguire filtri in Ansible, abbiamo bisogno di un playbook in cui scriviamo le attività. Per fare ciò, quanto segue è l'affermazione che useremo per creare il playbook in Ansible.

[root@master ansible]# nano regex_search.YML

Ora, il playbook è iniziato nel nuovo terminal di Ansible. Iniziamo a scrivere le dichiarazioni richieste nel playbook in modo da poter eseguire il filtro. Innanzitutto, scriveremo il nome del dispositivo host in cui vogliamo configurare il filtro di ricerca Regex. Stiamo usando l'host locale per implementare il filtro. Otterremo solo i dati richiesti dell'host locale, quindi abbiamo false l'opzione di fatti di raccolta. Nel primo compito, abbiamo ricevuto alcuni dati dal campione.Documento txt e quindi archiviato nella variabile "out" dichiarata utilizzando l'opzione di registro del playbook. Quindi, eseguiamo il debug dell'attività in modo da poter cercare la stringa "due" dal contenuto della variabile out e visualizzarla sul terminale della console Ansible.

- Host: localhost
Gather_Facts: false
compiti:
- Nome: memorizzare il contenuto del campione.txt nella variabile "out"
Shell: campione di gatto.TXT
Registro: fuori
- Nome: visualizzare il contenuto della variabile "out", corrispondente "due"
debug:
msg: "out.stdout | regex_search ('.*due.*', ignorecase = true) "

Il prossimo passo è eseguire la seguente riga per ottenere la frase che contiene la stringa "due", dopo aver scritto le attività per il playbook.

[root@master ansible]# ansible-playbook regex_search.YML

La frase dalla variabile fuori che contiene la parola "due" viene visualizzata nell'output utilizzando il filtro di ricerca regex, che è stato eseguito correttamente e può essere visto con il segnale OK.

Esempio 2: mostra la stringa "file" dalla variabile dichiarata in Ansible

Ora, implementeremo il secondo scenario in cui vogliamo trovare i dati dalla variabile dichiarata in Ansible. Innanzitutto, apriremo di nuovo il playbook:

[root@master ansible]# nano regex_searcg.YML

In questo esempio, abbiamo dichiarato un nome variabile "my_var" e quindi abbiamo memorizzato il contenuto nella variabile. Ora, vogliamo ottenere la stringa specifica dalla variabile, quindi dobbiamo definire l'attività nel playbook. Come mostrato, abbiamo anche usato i parametri opzionali del filtro Regex_Search nell'opzione di debug alla fine del playbook. Questi parametri sono parametri multiline e ignorecasi che contiene il valore "vero".

- Host: localhost
Gather_Facts: false
VAR:
my_var: "Test First File \ Ntest ​​Second File \ Ntest ​​Terzo file"
compiti:
- Nome: visualizza il contenuto della variabile "my_var", corrispondente "file"
debug:
msg: "my_var | regex_findall ('.*file.*', multiline = true, ignoreCase = true) "

Ora eseguiremo il playbook e mostreremo i risultati del playbook nel terminal:

[root@master ansible]# ansible-playbook regex_search.YML

Ecco i risultati desiderati visualizzati di seguito:

Conclusione

Abbiamo approfondito i dettagli su ciò che è un filtro di ricerca regex in Ansible e come utilizzare il filtro nel playbook Ansible e cosa riceveremo in cambio. Per comprendere correttamente il filtro di ricerca regex Ansible, abbiamo utilizzato alcuni casi.