Jinja2/Ansible 比较模板中的 HostVars 值

Jinja2/Ansible Comparing HostVars Values In A Template

我正在尝试比较 Ansible Jinja 模板中 2 个基于清单文件的主机的 hostvars 魔术变量的值。要求基本上确保项目包含在生成的模板输出中,前提是清单中 2 台主机的 IP 地址不相同。

我试过这样做:

{%if {{hostvars[‘CoolServer-1’][‘ansible_default_ipv4’][‘address’]}} != {{hostvars[‘Coolserver2-1’][‘ansible_default_ipv4’][‘address’]}} %}
df -h
{% endif %}

然而,这失败了,Jinja/Ansible 吓坏了。有没有一种方法可以通过比较 Jinja 中的 hostvars 值和 Ansible 来完成我想做的事情?

你不应该在 {% if 中使用 {{

试试:

{% if hostvars['CoolServer-1']['ansible_default_ipv4']['address'] != hostvars['Coolserver2-1']['ansible_default_ipv4']['address'] %}
df -h
{% endif %}

P.S。并检查你的单引号 (),它们看起来很奇怪并且不同于 '