Wenn Sie das Vorlagenmodul verwenden, möchten Sie möglicherweise eine eigene Funktion erstellen und aufrufen. jinja2 hat eine Funktion namens Makro, die eine Datei aufruft, in der eine eindeutige Funktion aus einer anderen j2-Datei geschrieben wird. Es scheint, dass es verwendet werden kann, aber ich werde es tatsächlich versuchen, wenn es auch mit dem Vorlagenmodul verwendet werden kann.
(1)Playbook
template_sample.j2
---
- name: template TEST
hosts: localhost
gather_facts: no
vars:
ansible_python_interpreter: /usr/bin/python3
tasks:
- name: 'template'
template:
src: base.j2 #Playbook, von dem aus das Makro aufgerufen wird
dest: result.txt
___ (2) j2-Datei (base.j2: Aufruferdatei) ___ Zeile 1: Laden Sie das Makro in macro.j2, das sich im selben Verzeichnis wie diese j2-Datei befindet 2. Zeile: Übergeben Sie die Variable an eine eindeutige Funktion namens test1 in macro.j2 Zeile 3: Übergeben Sie die Variable an eine eindeutige Funktion namens test2 in macro.j2
base.j2
{% import "macro.j2" as macro %}
{{ macro.test1("Taro", "Tokyo") }}
{{ macro.test2("Hanako", "tennis") }}
___ (3) j2-Datei (macro.j2: Datei, in die die ursprüngliche Funktion geschrieben wurde) ___ Schreiben Sie die Funktion als "Makrofunktionsname (Variable 1, Variable 2, ...)". Zum Schluss schließen wir es mit "Makro beenden"
macro.j2
{% macro test1(var1, var2)%}
My name is {{ var1 }}
I live in {{ var2 }}
{% endmacro %}
{% macro test2(var1, var2)%}
My name is {{ var1 }}
I like {{ var2 }}
{% endmacro %}
Ich konnte es wie erwartet ausführen. Schneiden wir eine ähnliche Beschreibung in eine Makrodatei aus und erstellen eine intelligente Vorlage.
result.txt
My name is Taro
I live in Tokyo
My name is Hanako
I like tennis
[Ansible x NW-Automatisierung] Ich möchte NW-Geräteeinstellungen mit dem Vorlagenmodul erstellen
Recommended Posts