Manipulieren Sie Ansible -Daten mit Jinja -Filtern

Manipulieren Sie Ansible -Daten mit Jinja -Filtern

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:

  1. Logarithmusfilter - Variable | log - Gibt die Basis des Logarithmus in Klammern als variable | an Protokoll (2)
  2. Leistungsfilter - Variable | POW (3) - Gibt die an die angegebene Leistung angehobene Variable zurück
  3. Absoluter Filter - Variable | ABS - Gibt den absoluten Wert für die bestandene Variable zurück
  4. Wurzelfilter - Variable | root - Dies gibt das Quadratwurzel der Variablen zurück. Um das Stamm ausdrücklich anzugeben, übergeben Sie den Wert in Klammern. Zum Beispiel Cube Root Variable | root (3)

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:

  1. Sha1 - var | Hash ("SHA1")
  2. SHA256/SHA512 - var | password_hash (“sha256/512”)
  3. MD5 - var | Hash ("Md5")
  4. String -Prüfsumme - var | Prüfsumme

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:

  • URL -Split -Filter - “Entwickler@https: // linuxHint.com: 8080/Index.html?query = linux ”| urlspilt ("Hostname"), - gibt "LinuxHint zurück" zurück.com ”
  • Schließen Sie die Liste bei - list | Join - Wird verwendet, um eine Liste in eine String Var hinzuzufügen
  • Verzeichnispfad - Path | Dirname
  • Erweitern Sie eine Tilde - Path | Erweiterung

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.