Si vous utilisez le module de modèle, vous souhaiterez peut-être créer votre propre fonction et l'appeler. jinja2 a une fonction appelée macro, qui appelle un fichier dans lequel une fonction unique est écrite à partir d'un autre fichier j2. Il semble qu'il puisse être utilisé, mais je vais en fait l'essayer s'il peut également être utilisé avec le module de modèle.
(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 à partir duquel la macro est appelée
dest: result.txt
___ (2) fichier j2 (base.j2: fichier de l'appelant) ___ Ligne 1: chargez la macro dans macro.j2, qui se trouve dans le même répertoire que ce fichier j2 2ème ligne: Passez la variable à une fonction unique appelée test1 dans macro.j2 Ligne 3: Passez la variable à une fonction unique appelée test2 dans macro.j2
base.j2
{% import "macro.j2" as macro %}
{{ macro.test1("Taro", "Tokyo") }}
{{ macro.test2("Hanako", "tennis") }}
___ (3) fichier j2 (macro.j2: fichier dans lequel la fonction d'origine est écrite) ___ Commencez à écrire la fonction comme "nom de la fonction macro (variable 1, variable 2, ...)" Enfin, fermons-le avec "end macro"
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 %}
J'ai pu l'exécuter comme prévu. Découpons une description similaire dans un fichier macro et créons un modèle intelligent.
result.txt
My name is Taro
I live in Tokyo
My name is Hanako
I like tennis
Recommended Posts