Bei einigen Gelegenheiten müssen Sie möglicherweise Daten transformieren und manipulieren, wenn Sie Ansible zur Automatisierung verschiedener Aufgaben verwenden. In Ansible können Sie eine Reihe von integrierten Filtern verwenden oder benutzerdefinierte Filter erstellen, um Daten zu manipulieren, zu verarbeiten und zu konvertieren. Ansible verwendet Jinja2 -Vorlagenfilter im Hintergrund, damit Benutzer Filter für bestimmte Daten erstellen können.
Es ist wichtig zu beachten. Dies hilft, die Datenmenge zu verringern, die nach der lokalen Verarbeitung an den Remote -Host übertragen werden. Wenn Sie Jinja Templating nicht vertraut sind, ist Jinja eine einfache, intuitive, schnelle und sichere Vorlagensprache für die Python -Programmiersprache, die nach dem populären Python -Framework -Django -Vorlagen entwickelt wurde.
Wir werden nicht in die Funktionsweise von Jinja -Vorlagen eingehen, obwohl es ein zusätzlicher Vorteil sein kann, zu verstehen, wie es mit Vorlagen funktioniert.
Schauen Sie sich die unten angegebene Ressource an, um mehr über Jinja zu erfahren.
https: // linkfy.zu/jinjadocs
Wie Ansible -Filter funktionieren
Wie bereits erwähnt, baut der Ansible -Filtermotor auf dem Jinja -Templating -Modell auf. Auf diese Weise können Benutzer diese Vorlagen verwenden, um Daten einzugeben, sie zu verarbeiten und eine Ausgabe anzugeben, die auf den definierten Filtern basiert.
Sobald die Daten mit der definierten Vorlage transformiert und filtriert werden, können Sie sie verwenden, um andere Aufgaben in Ansible auszuführen. Weitere Informationen zu Filtern in Ansible finden Sie auf der folgenden Website:
https: // linkfy.zu/ansibleFilters
Ansible hat viele Filter, die alle sehr nützlich und für viele verschiedene Szenarien anwendbar sind. Sobald Sie die Filterausgabe haben, können Sie sie verwenden, um andere Aufgaben wie Debugging auszuführen.
Die allgemeine Syntax für die Filterdaten lautet wie folgt:
|
Verwenden von Ansible -Filtern
Wir werden uns nun Beispiele für Ansible -Filter ansehen, mit denen wir verschiedene Aufgaben ausführen können.
NOTIZ: Wie bereits erwähnt, hat Ansible viele Filter, sodass wir nicht alle in diesem Artikel abdecken können. Stattdessen soll Ihnen dieses Tutorial die Grundlagen für die Verwendung verschiedener Ansible -Filter zur Verfügung stellen.
Beispiel 1: Datenfilter von Ansible Format
Die Datenfilter der Ansible -Format -Daten nehmen eine Ausgabedatenstruktur in einer Vorlage ein und verwenden den angegebenen Filter, um sie im im Filter aufgerufenen Format zu rendern.
Im Folgenden finden Sie einen Beispielfilter, um in JSON und YAML zu konvertieren:
Variable | to_json
Variable | to_yaml
Betrachten Sie zum Beispiel das folgende Spielbuch:
- Hosts: Alle Aufgaben:
- Shell: Cat /TMP /All.JSON
Register: Ergebnis
- debuggen:
msg: "Ergebnis.stdout | to_nice_yaml "
Durch Ausführen des obigen Spielbuchs wird eine Ausgabe für die JSON -Daten erstellt, die in YAML konvertiert sind. Das Folgende ist ein Beispielausgang:
Sie können auch andere Filter wie to_nice_yaml angeben, um die Ausgabe in einem menschlichen lesbaren Format zu erhalten.
Variable | to_nice_json
Variable | to_nice_yaml
Mit den Formatierungsdatenfiltern können Sie Daten in verschiedene Formate umwandeln und für verschiedene Aufgaben verwenden.
Zum Beispiel können Sie wie im folgenden Spielbuch analysieren Sie Multi-Dokument-Yaml-Zeichenfolgen:
- Hosts: Alle Aufgaben:
- Shell: Cat /TMP /All.JSON
Register: Ergebnis
- debuggen:
msg: "Ergebnis.stdout | to_yaml | Liste"
Beispiel 2: Ansible Standard Filter
Der ansible Standardfilter hilft bei der Standardwerte zu undefinierten Variablen. Die Standard -Ansible -Konfiguration schlägt undefinierte Variablen fehl. Wenn Sie beispielsweise eine undefinierte Variable haben, können Sie feststellen.
Die allgemeine Syntax für den Standardfilter lautet wie folgt:
| Standardwert)
Zum Beispiel:
- Hosts: Alles
vars:
Aufgaben:
set_fact:
UNDEF_VAR: "0_VAR | Standard (5)"
Das obige Spielbuch setzt den Wert der Variablen "0_var" auf 5, wenn nicht explizit definiert, anstatt einen Fehler zu werfen.
Um eine Variable zu definieren, können Sie den obligatorischen Filter verwenden. Sie müssen lediglich auf das obige Beispiel beziehen und den Standard durch das Obligatorium ersetzen:
0_var | obligatorisch
Beispiel 3: Ansible -Debug -Filter
Beim Debuggen können Sie den Filter type_debug verwenden, um Informationen über den variablen Typ zu erhalten. Der variable Typ befindet sich in Python, da der Motor Python-basiert ist. Die allgemeine Syntax für den Filter ist wie folgt:
Variable | Typ_Debug
Beispiel 4: Mathematikfilter
Mit den ansiblen Mathematikfiltern können Sie mathematische Abfragen durchführen. Diese Filter enthalten Folgendes:
Diese mathematischen Filter können sehr nützlich sein, insbesondere im Umgang mit großen Datenmengen und sofortigen Mathematikoperationen.
Beispiel 5: Hash -Filter
Mit den Ansible -Hash -Filtern können Sie den Hash einer Zeichenfolge oder über bestehende Daten erhalten. In den meisten Fällen benötigen Sie diese Filter nicht, können jedoch verwendet werden, wenn dies erforderlich ist. Diese Filter enthalten Folgendes:
Andere nützliche Filter
Wie Sie vielleicht bemerkt haben, hat Ansible viele Filter. Einige Ansible -Filter, die Sie möglicherweise nützlich finden, enthalten Folgendes:
Abschluss
Ansible -Filter sind nützlich, wenn Sie Debugging -Aufgaben ausführen oder spezifische Informationen benötigen, ohne zu viel zu tippen. Da Ansible benutzerdefinierte Filter unterstützt, können diese Filter in bestimmten Anwendungsfällen besonders nützlich sein.