GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So verwenden Sie die Jinja2-Vorlage in Ansible

Jinja2 ist eine der leistungsstärksten und bekanntesten Vorlagen-Engines auf Python-Basis. Aufgrund der gleichen Programmiersprache ist es bei Ansible-Benutzern am beliebtesten. Es hilft vielen IT-Mitarbeitern in vielerlei Hinsicht. Die Jinja2-Vorlage kann auf die Variablen in Ansible zugreifen. In Ansible müssen viele Dinge auf jedem Server geändert werden, was viel Zeit in Anspruch nimmt. Wenn man also jinja2-Templating verwendet, kann man Variablen nur in dieses Template ändern, was zu einer Zeitersparnis und einer einfachen Umgebung führt.

In Ansible wird ein jinja2-Template für den Zugriff auf die Variablen verwendet. Wenn Sie also die Variable nach Bedarf ändern, können Ansible-Playbooks viel Zeit sparen. Die Jinja2-Vorlage verfügt über integrierte Filter, und Benutzer können solche Filter nur manipulieren, indem sie viele Dateien für die reibungslosen Playbooks konfigurieren.

Es hat viele andere Funktionen. Einige davon sind unten aufgeführt.

  • Es ist ziemlich einfach für Debugging-Zwecke
  • Vorlagenvererbung wird gut unterstützt
  • Es ist sehr schnell und einfach kompiliert

In diesem Artikel werden wir die Verwendung der jinja2-Vorlage und den Prozess zu ihrer Konfiguration besprechen.

Variablen, auf die von der Jinja2-Vorlage zugegriffen wird

Die Jinja2-Vorlage kann auf die Variablen in Ansible zugreifen. Schreiben Sie auf einem ansiblen Steuerknoten eine jinja2-Vorlagendatei, die einfach auf die Variablen zugreifen kann, die im selben Verzeichnis oder im Playbook definiert sind.

Wir werden ein Beispiel schreiben, das zeigt, wie die jinja2-Vorlage auf die Werte zugreift und diese manipuliert, indem sie auf die Variablen zugreift. Hier ist das Playbook jinja2_var_example.yml

Lassen Sie uns nun das Playbook jinja2_var_example.yml

ausführen

Hier können Sie feststellen, dass der Wert am Ausgang geändert wird. Da {{ }} auch eine Syntax der jinja2-Vorlage ist, kann es auf die Variable zugreifen und den Wert in den tatsächlichen ändern.

Ein weiteres Beispiel, das die jinja2-Vorlage zeigt, die auf die Variable zugreift. Hier erstellen wir einen Ordner und schreiben dann eine jinja2-Vorlage „nginx.conf.j2“, da j2 die Erweiterung für die jinja2-Vorlage ist.

$ mkdir jinja2_variable
$ cd jinja2_variable/
$ vim nginx.conf.j2

Dann schreiben wir eine Datei mit jinja2-Templating, in der Variablen verwendet werden. Solche Variablen können in verschiedenen Dateien oder in Playbooks definiert werden, die zu diesem Zeitpunkt nach Bedarf manipuliert werden können.

Sie müssen die Variablen {{ http_port }} und {{ http_host }} auf dem obigen Screenshot bemerkt haben.

Jetzt werden wir das Playbook schreiben, das aus den tatsächlichen Werten der Variablen besteht, die in der jinja2-Vorlagendatei enthalten sind.

Nachdem das Playbook erfolgreich ausgeführt wurde, werden die Variablen durch tatsächliche Werte in der Datei des Zielpfads ersetzt.

Sie können sehen, dass die Werte auf dem folgenden Screenshot geändert wurden.

Dies sind die Beispiele, die zeigen, wie das jinja2-Template auf die Variablen zugreift und die tatsächlichen Werte in der endgültigen Ausgabe anzeigt.

Bedingt in jinja2-Vorlage

Bedingte Anweisungen wie for-Schleifen können von der jinja2-Vorlage verwendet werden. Schleifen helfen beim Iterieren über Elemente in einem Bereich, einer Liste usw. Hier schreiben wir ein Beispiel, um die for-Schleife zu zeigen, die in der jinja2-Vorlage verwendet wird.

Zum Beispiel schreiben wir unsere Vorlagendatei „server_hosts.j2“ wie im folgenden Screenshot.

$ cat server_hosts.j2

Ausgabe:

{% for host in groups['all'] %}

{{ hostvars[host].ansible_facts.default_ipv4.address }} {{ hostvars[host].ansible_facts.fqdn }} {{ hostvars[host].ansible_facts.hostname }}

{% endfor %}

Es wird über alle Hosts im Inventar iteriert. Für jeden Host wird der Wert aller in der Vorlage verwendeten Variablen angezeigt.

Auf dem Kontrollknoten werden wir ein Playbook „conditional.yml“ schreiben, das die obige jinja2-Vorlagendatei darin enthält.

$ sudo vim conditional.yml

Jetzt führen wir das Playbook „conditional.yml“

aus
$ ansible-playbook conditional.yml

Jetzt können wir das Ergebnis auf dem Host-Knoten sehen, ob die Datei /etc/hosts aktualisiert wird oder nicht.

Es ist das Endergebnis unserer Variablen in der jinja2-Vorlagendatei, die über alle Hosts im Inventar iteriert wurde. Daher können die bedingten Anweisungen wie for-Schleifen auch in jinja2-Vorlagendateien verwendet werden.

In der jinja2-Vorlage verwendete Filter

Wenn Sie möchten, dass die Ausgabe anders oder formatiert ist, können Sie Filter verwenden. Sie können die Variablen einfach mit den Argumenten weiterleiten, wie unten gezeigt.

{{ variable | argument }}

Hier schreiben wir eine jinja2-Vorlagendatei „jinja_filters.j2“, um die Filter anzuzeigen, die in der jinja2-Vorlagendatei verwendet werden.

$ vim jinja_filters.j2

Wir werden ein Playbook „filters.yml“ schreiben, das aus einer jinja2-Vorlagendatei besteht.

$ vim filters.yml

Jetzt führen wir das Playbook „filters.yml“

aus

Jetzt können wir das Ergebnis auf dem Hostknoten sehen, ob die Zieldatei mit dem Inhalt in Großbuchstaben erstellt wurde oder nicht.

Hier können Sie sehen, dass der gesamte Text in Großbuchstaben geschrieben ist, da wir einen Filter verwendet haben, indem wir das Variablenelement in das Großbuchstaben-Argument geleitet haben.

Schlussfolgerung

Sie können solche Jinja2-Vorlagendateien gemäß Ihren Anforderungen verwenden, um die Variablen und Daten zu manipulieren, um Zeit zu sparen und Playbooks auf Ansible reibungslos auszuführen. Sie können auch Filter verwenden, um die Zahlen von hoch nach niedrig zu manipulieren und so weiter. Versuchen Sie, die jinja2-Vorlage für weitere Funktionen zu erkunden. Vielen Dank!


Ubuntu
  1. So verwenden Sie den Apt-Get-Befehl unter Linux

  2. So verwenden Sie den sudo-Befehl unter Linux

  3. So verwenden Sie den Hostnamen-Befehl unter Linux

  4. So verwenden Sie den Passwd-Befehl unter Linux

  5. Wie verwende ich den basename-Befehl?

So verwenden Sie den Befehl locate unter Linux

So verwenden Sie Variablen im Ansible Playbook

So verwenden Sie die Jinja2-Vorlage im Ansible Playbook

Wie man Ansible verwendet, um Vim zu konfigurieren

So verwenden Sie den Linux Top-Befehl

Wie benutzt man das Hud?