Ansible regex_search, um Daten zu filtern

Ansible regex_search, um Daten zu filtern

Heute entdecken wir einen weiteren Filter des Ansible -Tools, bei dem es sich um den Regex -Suchfilter handelt. Wir werden entdecken, wie die Regex -Suchfunktionen von Ansible. Wir werden auch untersuchen.

In Ansible bedeutet Reg-ex regelmäßig Ausdruck und die Suche steht für etwas, um etwas zu finden. Der Regex_Search -Filter in Ansible ist also eine Art komplexer Scan, der eher nach bestimmten Sequenzen als bestimmte Wörter und Phrasen sucht. Anstatt viele wörtliche Suchanfragen zu erstellen, ermöglicht Regex es, eine bestimmte Zeichenzeichenfolge mit regulären Ausdrücken zu finden. Um eine bestimmte Sequenz abzurufen, arbeitet Regex mit einer Suchabfrage und Metacharaccern zusammen. Die grundlegenden Bauelemente des regulären Ausdrucks sind Metacharacter. Finden Sie einige spezifische Zeichenfolgen wie Sicherheitsnummern, Lizenznummern, Webseiten -Adressen, Mailingadressen, Registrierungsnummern usw., die in bestimmte Sequenzen passen.

Parameter von regex_search

Der Parameter ist ein eindeutiger Typ von Variablen, der von einem Filter, einem Plugin usw. verwendet wird, um sich auf ein bestimmtes Bit der dem Filter als Eingabewert in Ansible gegebenen Daten zu beziehen. Diese Informationsbrocken geben die Werte der Parameter an, die zum Ausführen oder Initiieren des Filters verwendet werden. Im Folgenden finden Sie die erforderlichen und optionalen Parameter, die wir bei der Verwendung des Regex_Serachh -Filters im Ansible Playbook verwenden werden.

Erforderliche Parameter

Im Folgenden sind die Parameter erforderlich, damit wir das Muster in einer bereitgestellten Zeichenfolge finden können.

Eingabezeichenfolge: Wir werden Eingaben als Zeichenfolge nehmen, damit wir das Muster dagegen finden können.

Optionale Parameter

Dies sind die Parameter, die wir verwenden werden, wenn Sie bei der Suche nach einem bestimmten Muster aus der Eingabezeichenfolge erforderlich sind.

Regex -Zeichenfolge: Regex ist ein regulärer Ausdruck, der eine Zeichenfolge enthält und das Matching -Muster beim Filtern angibt.

Fall ignorieren: Es ist ein boolescher Parameter. Wenn die reguläre Ausdruckszeichenfolge wahr ist, wird die Suchfehlerempfindlichkeit erzeugt und wenn sie nicht wahr ist, ist er gezwungen, fallsempfindlich zu sein.

Multiline: Es ist auch ein boolescher Parameter der Regex -Suche in Ansible. Wenn der Scan wahr ist, sucht die Suche über Zeilenende und wenn er falsch ist, sucht er nicht über das Zeilenende.

Voraussetzungen des Ansible Filter Regex_search

Wenn Sie in der Regex -Suche weitermachen möchten, gehen wir davon aus, dass Sie die folgenden Voraussetzungen treffen, die unten angegeben sind:

  • Während wir im Ansible-Tool arbeiten und den Regex-Suchfilter implementieren möchten, müssen Sie eine Ansible-bezogene Software auf Ihrem System haben. Für dieses Tutorial verwenden wir Ansible 2.12 oder eine spätere Version.
  • Um den Filter auf Remote -Servern auszuführen, benötigen wir einen Controller und hier ist Ansible Server der Hauptcontroller, der den Regex -Filter im lokalen Hostserver konfiguriert.

Lassen Sie uns einfach tiefer in den Regex -Suchfilter eintauchen und prüfen, wie Ansible ihn durch ein paar Situationen in Kraft setzen.

Beispiel 01: Übereinstimmung mit der Zeichenfolge "zwei" mithilfe von Regex -Suchfilter

Hier ist das allererste Beispiel, in dem wir die „zwei Zeichenfolgen aus dem bereits erstellten Beispieldokument finden werden und einige Strings darin enthalten. Wenn wir Filter in Ansible ausführen möchten, brauchen wir ein Spielbuch, in dem wir die Aufgaben schreiben. Dazu ist Folgendes die Aussage, mit der wir das Spielbuch in Ansible erstellen werden.

[root@master Ansible]# nano regex_search.YML

Jetzt wird das Spielbuch im neuen Terminal von Ansible initiiert. Lassen Sie uns mit dem Schreiben der erforderlichen Aussagen im Spielbuch beginnen, damit wir den Filter ausführen können. Zunächst schreiben wir den Host -Gerätenamen, in dem wir den Regex -Suchfilter konfigurieren möchten. Wir verwenden den lokalen Host, um den Filter zu implementieren. Wir erhalten nur die erforderlichen Daten des lokalen Host. In der ersten Aufgabe haben wir einige Daten aus der Probe erhalten.TXT -Dokument und speicherte es dann in der Variablen „Out“, die mithilfe der Registeroption des Spielbuchs deklariert wurde. Dann debuggen wir die Aufgabe, damit wir die String von „zwei“ aus dem Inhalt der Out -Variablen durchsuchen und sie am Ansible -Konsolen -Terminal anzeigen können.

- Gastgeber: Localhost
sammeln_facts: false
Aufgaben:
- Name: Speichern Sie den Inhalt der Stichprobe.TXT in der Variablen "Out"
Schale: Katzenprobe.txt
Register: Out
- Name: Zeigen Sie den Inhalt der Variablen 'out' an, die mit 'Two' übereinstimmt '
debuggen:
msg: "out.stdout | regex_search ('.*zwei.*', ignoreCase = true) "

Der nächste Schritt besteht darin, die folgende Zeile auszuführen, um den Ausdruck zu erhalten, der die Zeichenfolge „zwei“ enthält, nachdem die Aufgaben für das Spielbuch geschrieben wurden.

[Root@Master Ansible]# Ansible-Playbook regex_search.YML

Die Phrase aus der Out -Variablen, die das Wort „zwei“ enthält.

Beispiel 2: Zeigen Sie die Zeichenfolge „Datei“ aus der deklarierten Variablen in Ansible an

Jetzt werden wir das 2. Szenario implementieren, in dem wir die Daten aus der deklarierten Variablen in Ansible finden möchten. Erstens werden wir das Spielbuch wieder öffnen:

[root@master ansible]# nano regex_searcg.YML

In diesem Beispiel haben wir einen variablen Namen "my_var" deklariert und dann Inhalte in der Variablen gespeichert. Jetzt möchten wir die spezifische Zeichenfolge aus der Variablen erhalten, damit wir die Aufgabe im Spielbuch definieren müssen. Wie gezeigt, haben wir auch optionale Parameter des Regex_Search -Filters in der Debug -Option am Ende des Spielbuchs verwendet. Diese Parameter sind Multiline- und Ignorecase -Parameter, der den "wahren" Wert enthält.

- Gastgeber: Localhost
sammeln_facts: false
vars:
my_var: "Erste Datei \ Ntest ​​zweite Datei \ Ntest ​​dritte Datei"
Aufgaben:
- Name: Zeigen Sie den Inhalt der Variablen 'my_var' an, die mit der Datei mit 'Datei' übereinstimmt
debuggen:
msg: "my_var | regex_findall ('.*Datei.*', multiline = true, ignoreCase = true) "

Jetzt werden wir das Spielbuch ausführen und die Ergebnisse des Spielbuchs im Terminal präsentieren:

[Root@Master Ansible]# Ansible-Playbook regex_search.YML

Hier sind die nachstehend angezeigten gewünschten Ergebnisse:

Abschluss

Wir haben uns sehr detailliert eingestellt, was ein Regex -Suchfilter in Ansible ist und wie der Filter im Ansible Playbook verwendet wird und was wir als Gegenleistung erhalten werden. Um den Ansible Regex -Suchfilter ordnungsgemäß zu verstehen, haben wir einige Fälle verwendet.