Jinja2 如何在模板文件中嵌入可解释的事实?

Jinja2 如何在模板文件中嵌入可解释的事实?,jinja2,ansible-2.x,Jinja2,Ansible 2.x,我有一个清单文件,看起来像这样 [elk-master-nodes] 10.22.123.123 10.22.234.234 10.22.111.222 [elk-data-nodes] 10.22.111.111 10.22.222.222 [elk-client-nodes] 10.22.111.234 我的模板文件中有这个 {% if "{{ ansible_default_ipv4.address }}" in groups['elk-master-nodes'] %} node.

我有一个清单文件,看起来像这样

[elk-master-nodes]
10.22.123.123
10.22.234.234
10.22.111.222

[elk-data-nodes]
10.22.111.111
10.22.222.222

[elk-client-nodes]
10.22.111.234
我的模板文件中有这个

{% if "{{ ansible_default_ipv4.address }}" in groups['elk-master-nodes'] %}
node.master: true
node.data: false
{% elif "{{ ansible_default_ipv4.address }}" in groups['elk-data-nodes'] %}
node.master: false
node.data: true
{% else %}
node.master: false
node.data: false
{% endif %}
但是,结果文件总是包含if语句的“else”子句,也就是说,我在所有节点中都看到了这一点

node.master: false
node.data: false

我猜我没有正确地嵌入Ansible事实,Ansible\u default\u ipv4.address,在这种情况下?正确的语法是什么?删除“”会导致语法错误。

因为在jinja2代码中基本上是Python,只需执行以下操作即可

{% if ansible_default_ipv4.address in groups['elk-master-nodes'] %}
node.master: true
node.data: false
{% elif ansible_default_ipv4.address in groups['elk-data-nodes'] %}
node.master: false
node.data: true
{% else %}
node.master: false
node.data: false
{% endif %}