在 if 条件中使用 ansible fact - Jinja 模板

Use an ansible fact in an if conditional - Jinja template

目前我的 Ansible Jinja 模板中有如下内容

{% for key in filebeat.values() %}
{% for x in key.servers %}
{% if x in {{ ansible_hostname }} %}
text-goes-here
{% endif %}
{% endfor %}
{% endfor %}

执行ansible playbook时,出现以下错误:

AnsibleError:模板化字符串时出现模板错误:预期的标记':',得到'}

似乎对于 Jinja,我无法在 if 语句中使用 {{ ansible_hostname }}

有什么方法可以在 if 语句中获取 ansible_hostname 的值来解决这个问题吗?我已经尝试使用查找和其他组合,但到目前为止没有运气。

提前致谢

您永远不会嵌套 Jinja {{...}} 模板标记。如果您已经在模板上下文中,则只需按名称引用变量...

{% if x in ansible_hostname %}
text-goes-here
{% endif %}

您已经在 {% for ... %} 循环中使用了完全正确的语法。您写道:

{% for key in filebeat.values() %}

而不是:

{% for key in {{ filebeat.values() }} %}

{% if ... %} 语句没有什么不同。