Ansible

Ansible-Daten mit Jinja-Filtern manipulieren

Ansible-Daten mit Jinja-Filtern manipulieren

Wenn Sie Ansible verwenden, um verschiedene Aufgaben zu automatisieren, müssen Sie in einigen Fällen möglicherweise Daten transformieren und manipulieren. In Ansible können Sie eine Reihe von integrierten Filtern verwenden oder benutzerdefinierte Filter erstellen, um Daten zu bearbeiten, zu verarbeiten und zu konvertieren. Ansible verwendet im Hintergrund jinja2-Vorlagenfilter, damit Benutzer Filter für bestimmte Daten erstellen können.

Es ist wichtig zu beachten, dass das Filtertemplate auf dem Ansible-Controller und nicht auf den angegebenen Remote-Hosts ausgeführt wird. Dies trägt dazu bei, die Datenmenge zu reduzieren, die nach der lokalen Verarbeitung an den Remote-Host übertragen wird. Wenn Sie mit Jinja-Vorlagen nicht vertraut sind, ist Jinja eine einfache, intuitive, schnelle und sichere Vorlagensprache für die Programmiersprache Python, die nach dem beliebten Python-Framework Django-Vorlagen entwickelt wurde.

Wir werden nicht darauf eingehen, wie Jinja-Templating funktioniert, obwohl es ein zusätzlicher Vorteil sein kann, zu verstehen, wie es mit Templates funktioniert.

Sehen Sie sich die unten bereitgestellte Ressource an, um mehr über Jinja . zu erfahren.

https://linkfy.to/jinjaDocs

Wie Ansible-Filter funktionieren

Wie bereits erwähnt, baut die Ansible-Filter-Engine auf dem Jinja-Vorlagenmodell auf. Dadurch können Benutzer diese Vorlagen verwenden, um Daten einzugeben, zu verarbeiten und eine Ausgabe basierend auf den definierten Filtern bereitzustellen.

Nachdem die Daten mithilfe der definierten Vorlage transformiert und gefiltert wurden, 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.to/AnsibleFilters

Ansible hat viele Filter, die alle sehr nützlich und auf viele verschiedene Szenarien anwendbar sind. Sobald Sie die Filterausgabe haben, können Sie sie verwenden, um andere Aufgaben auszuführen, z. B. das Debuggen.

Die allgemeine Syntax zum Filtern von Daten 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.

HINWEIS: Wie bereits erwähnt, hat Ansible viele Filter, daher können wir nicht alle in diesem Artikel behandeln. Stattdessen soll Ihnen dieses Tutorial die Grundlagen der Verwendung verschiedener Ansible-Filter vermitteln.

Beispiel 1: Datenfilter im Ansible-Format

Die Ansible-Formatdatenfilter nehmen eine Ausgabedatenstruktur in einer Vorlage und verwenden den angegebenen Filter, um sie in dem im Filter aufgerufenen Format zu rendern.

Unten ist ein Beispielfilter zum Konvertieren in JSON und YAML:

variabel | to_json
variabel | to_yaml

Betrachten Sie beispielsweise das folgende Playbook:

- Hosts: alle Aufgaben:
- Shell: Katze /tmp/all.json
registrieren: Ergebnis:
- debuggen:
msg: "Ergebnis.Standard | to_nice_yaml"

Das Ausführen des obigen Playbooks erzeugt eine Ausgabe für die in YAML konvertierten JSON-Daten. Das Folgende ist eine Beispielausgabe:

Sie können auch andere Filter wie to_nice_yaml angeben, um die Ausgabe in einem für Menschen lesbaren Format zu erhalten.

variabel | to_nice_json
variabel | to_nice_yaml

Mit den Formatierungsdatenfiltern können Sie Daten in verschiedene Formate umwandeln und für verschiedene Aufgaben verwenden.

Sie können beispielsweise YAML-Strings für mehrere Dokumente parsen, wie im folgenden Playbook:

- Hosts: alle Aufgaben:
- Shell: Katze /tmp/all.json
registrieren: Ergebnis:
- debuggen:
msg: "Ergebnis.Standard | to_yaml | aufführen"

Beispiel 2: Ansible-Standardfilter

Der Ansible-Standardfilter hilft bei der Vorgabe von Werten für undefinierte Variablen. Die Standardkonfiguration von Ansible schlägt undefinierte Variablen fehl. Wenn Sie beispielsweise eine undefinierte Variable haben, können Sie Ansible anweisen, standardmäßig einen Wert zu verwenden, anstatt einen Fehler auszulösen.

Die allgemeine Syntax für den Standardfilter lautet wie folgt:

| Standardwert)

Beispielsweise:

- Gastgeber: alle
Varianten:
Aufgaben:
set_fact:
undef_var: "0_var | default(5)"

Das obige Playbook setzt den Wert der Variable '0_var' auf 5, wenn nicht explizit definiert, anstatt einen Fehler auszulösen.

Um eine Variable zu definieren, können Sie den obligatorischen Filter verwenden. Sie müssen sich nur auf das obige Beispiel beziehen und die Standardeinstellung durch die obligatorische ersetzen:

0_var | verpflichtend

Beispiel 3: Ansible Debug-Filter

Beim Debuggen können Sie den type_debug-Filter verwenden, um Informationen über den Variablentyp zu erhalten. Der Variablentyp wird in Python sein, da die Engine Python-basiert ist. Die allgemeine Syntax für den Filter lautet wie folgt:

variabel | type_debug

Beispiel 4: Mathematische Filter

Mit den mathematischen Filtern von Ansible können Sie mathematische Abfragen durchführen. Diese Filter umfassen Folgendes:

  1. Logarithmus-Filter - variable | log - gibt die Basis des Logarithmus in Klammern als Variable | log (2)
  2. Leistungsfilter - variable | pow(3) - gibt die Variable mit der angegebenen Potenz zurück
  3. Absoluter Filter - variabel | abs - gibt den absoluten Wert für die übergebene Variable zurück
  4. Wurzelfilter - variable | root - dies gibt die Quadratwurzel der Variablen zurück. Um die Wurzel explizit anzugeben, übergeben Sie den Wert in Klammern; zum Beispiel Kubikwurzel Variable | root(3)

Diese mathematischen Filter können sehr nützlich sein, insbesondere bei großen Datenmengen und sofortigen mathematischen Operationen.

Beispiel 5: Hash-Filter

Mit den Ansible-Hash-Filtern können Sie den Hash einer Zeichenfolge oder übergebene Daten abrufen. In den meisten Fällen werden Sie diese Filter nicht benötigen, sie können jedoch bei Bedarf verwendet werden. Diese Filter umfassen 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, verfügt Ansible über viele Filter. Einige Ansible-Filter, die Sie möglicherweise nützlich finden, umfassen die folgenden:

  • URL-Split-Filter - “ [email protected]://linuxhint.com:8080/index.html?query=linux” | urlspilt("Hostname"), - gibt "linuxhint" zurück.com“
  • Liste beitreten - Liste | join - wird verwendet, um eine Liste in eine Zeichenfolge var . hinzuzufügen
  • Verzeichnispfad - Pfad | dirname
  • Erweitern Sie eine Tilde - Pfad | expanduser

Fazit

Ansible-Filter sind praktisch, wenn Sie Debugging-Aufgaben ausführen oder bestimmte Informationen benötigen, ohne viel zu tippen. Da Ansible benutzerdefinierte Filter unterstützt, können diese Filter in bestimmten Anwendungsfällen besonders nützlich sein.

So zeigen Sie OSD-Overlay in Vollbild-Linux-Apps und -Spielen an
Das Spielen von Spielen im Vollbildmodus oder die Verwendung von Apps im ablenkungsfreien Vollbildmodus kann Sie von relevanten Systeminformationen ab...
Top 5 Karten zur Spielaufnahme
Wir alle haben Streaming-Gameplays auf YouTube gesehen und geliebt. PewDiePie, Jakesepticye und Markiplier sind nur einige der Top-Gamer, die Millione...
So entwickeln Sie ein Spiel unter Linux
Vor einem Jahrzehnt hätten nicht viele Linux-Benutzer vorhergesagt, dass ihr Lieblingsbetriebssystem eines Tages eine beliebte Spieleplattform für kom...