Ansible Selektr/Rejectattr

Ansible Selektr/Rejectattr

Die Jinja2 -Filter sind ein unglaublich starkes Tool, mit dem wir eine Vielzahl von Aktivitäten zur Bearbeitung von Informationen in Ansible unterstützen können. Basierend darauf werden wir in diesem Artikel die Ansible Selectattr- und Ablehnungs -Jinja -Filter diskutieren. Bevor wir uns jedoch zum Selektrieren und Ablehnungsabweis wenden, lassen Sie uns zunächst verstehen, wie die Rolle von Filtern in Jinja2 ist.

Was sind die Filter von Jinja2 in Ansible??

Wenn wir Informationsbearbeitung, Strukturierung und Übersetzung benötigen, verwenden wir Ansible. Jinja2 bietet mehrere vorgefertigte Filter sowie benutzerdefinierte anpassbare Filter an. Diese Filter sind Jinja2 -Filter, die im Backend arbeiten, was die bereitgestellten Informationen in einem Vorlagenausdruck verändert. Die gezielten Remote -Server sind nicht an der Vorlagen beteiligt, sondern findet am Ansible Controller -System statt. Infolgedessen werden Filter auf lokale Daten angewendet, die der Ansible Controller bereitstellt. Zusätzlich werden die Selektions- und Ablehnungsfilter von Ansible aus diesen Filtern abgeleitet.

SELECTTTR -Filter in Ansible

Der Selectattr steht für ausgewählte Attributfilter. Jedes SELECT -Attribut wird verwendet, um Tests an jedem Objekt durchzuführen, das ein definiertes Attribut ist, und nur diejenigen, die die Testfilter übergeben, eine Folge von Elementen ist. Das Ergebnis des Select Attribut. Im Ansible SelectTTR -Filter werden drei Parameter in ansible übergeben, die das Attribut, ein Boolescher Operator und ein Argument sind. Einer der integrierten Tests von Jinja kann als Operator ausgewählt werden.

Beispiel:

Hier ist ein einfaches Beispiel, in dem wir den Selektivfilter in Ansible verwenden werden. Um zu verstehen, wie es in Ansible funktionieren wird, werden wir ein Szenario implementieren, damit wir verstehen, wie es in Ansible funktionieren wird. Zuerst werden wir ein Playbook erstellen.

Ein Ansible Playbook hat unterschiedliche Module und jedes Modul führt eine bestimmte Funktionalität durch. Jedes Modul stellt Metadaten bereit, die festlegen, wann, wo und auf welchen Remote -Host die Aufgabe ausgeführt wird. Das Folgende ist der Befehl, den wir im Terminal schreiben werden, um ein Spielbuch zu erstellen.

[root@master ansible]# nano ansible_filter.YML

Um das Spielbuch zu erstellen, schreiben wir auch die Erweiterung des Playbooks, das YAML oder eine andere Markup -Sprache ist, bei der es sich um ein Dateiformat handelt, das die Erweiterung verwendet.YML. Jetzt wird das Spielbuch in ein neues Ansible -Terminal des Namens Ansible_filter gestartet.YML. Im Spielbuch schreiben wir zunächst die Informationen zu den Remote -Hosts. Bei Hosts verwenden wir den Localhost als Ziel -Remote -Host.

Als Nächst. Nach dem Einrichten des Hosts werden wir nun eine Liste aller Aufgaben erstellen, die wir ausführen möchten. Der erste Aufgabename ist „alle Umgebungsvariablen“ und wir haben die darin bestandene Variable übergeben, damit wir sie debuggen können. In der nächsten Aufgabe möchten wir den Filter von Jinja2 aktivieren, der in Ansible verwendet wird. Dies ist der Selektionfilter. Im selektrischen Filter haben wir die drei Argumente übergeben, die der Schlüssel, die Übereinstimmung und die Shell sind.

- Gastgeber:
- Lokalhost
sammeln_facts: true
Aufgaben:
- Name: Alle Umgebungsvariablen
debuggen:
var: 'ansible_facts.env '
- Name: Filter aktiviert
debuggen:
msg: "(ansible_facts.env | dict2Items | selectattr ('taste', 'Match', 'Shell')) | Liste "

Nachdem wir alle Aufgaben aufgelistet haben, möchten wir das Spielbuch beenden, indem wir Strg + X treffen und dann die Updates speichern. Jetzt möchten wir das Playbook ausführen. Wir werden den folgenden Befehl im Terminal schreiben:

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

Hier ist das erforderliche Showcase, indem Sie das Selectattr -Attribut im Spielbuch verwenden. Wie Sie gesehen haben, haben wir eine sehr lange Ausgabe erhalten, weil wir die sammelnde Faktenoption als True im Spielbuch verwendet haben. Deshalb zeigt es alle Informationen des Localhost in der Ausgabe im Ansible -Terminal an.

Wie gezeigt, wird das SELECT -Attribut aktiviert, indem das OK -Signal am Ende der Ausgangsklemme angezeigt wird.

RejectAttr -Filter in Ansible

Das Ablehnung steht für das Ablehnungsattribut von Jinja2 in Ansible und ist das Gegenteil von selektrieren. Der RejectAttr entfernt alle Elemente aus dem angegebenen Iterable, die das bereitgestellte Attribut nicht erfüllen und den Test erfolgreich bestehen. Durch die Durchführung von Tests auf den angegebenen Attribut jedes Elements im Rahmen des Filterprozesses führt die Ablehnung von Elementen, die den Test bestehen. Eine boolesche Bewertung des Wertes des Attributs findet statt, wenn kein Test bereitgestellt wird.

Beispiel:

Hier ist das Beispiel, das wir mit einem der wichtigsten Attribute von Jinja2 in Ansible durchführen werden, das das Ablehnungsattribut ist. In diesem Beispiel versuchen wir, eine Bedingung auf jedes Element in einem Wörterbuch anzuwenden, um übereinstimmende Elemente aus dem Wörterbuch zu beseitigen. Dafür werden wir das Playbook erneut starten, damit wir die Aufgaben gemäß dem Ablehnungsattribut ändern können. Unten finden Sie den Befehl zum Starten des Module_filters.YML Playbook:

[root@master ansible]# nano ansible_filter.YML

Jetzt, im Spielbuch, haben wir die „falsche“ Option für Sammelfakten übergeben, da wir nicht die zusätzlichen Informationen zum Lokalhost erhalten möchten, da wir die Informationen bereits im Beispiel für Selektionfilter erhalten haben. Jetzt schreiben wir die Variable im Spielbuch. In den VARs müssen wir den Namen und den Typ der Medikamente schreiben. Als nächstes müssen wir die Aufgabe schreiben. In der Aufgabe möchten wir alle Medikamente mit Ausnahme von Säugeln filtern, und wir debuggen, indem wir den Ablehnungsfilter darin verabschieden.

- Gastgeber:
- Lokalhost
sammeln_facts: false
vars:
Medikamente:
- Name: Masern, Typ: Injektionen
- Name: Nepawell, Typ: Drops
- Name: Colace, Typ: Suppositories
Aufgaben:
- Name: Filtern Sie alle anderen Medikamente als Säpporien
debuggen:
msg: "(Medicines | RejejeTtr ('Typ', 'Match', 'Suppositories')) | List"

Jetzt werden wir das Spielbuch beenden. Danach möchten wir das Spielbuch ausführen, damit wir die geeignete Ausgabe des Ablehnungsattributs von Ansible erhalten können.

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

Hier ist das Ergebnis eines Ablehnungsattributs im Ansible -Tool. Das Terminal zeigt Masern und Nepawell -Medizin und lehnt das Colace -Medizin aus dem Spielbuch ab.

Abschluss

Wir haben erfahren, welche Filter in Jinja2 sind und welche Filter wir in dieser Sitzung von Ansible verwenden werden. Wir haben die beiden wichtigen Filter besprochen, die die Selectattr- und Ablehnungsfilter in Ansible sind. Wir haben jedes Beispiel eines Filters implementiert, damit Benutzer die Konzepte und die Arbeit dieser Filter in Ansible leicht verstehen können.