在 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 ... %}
语句没有什么不同。
目前我的 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 ... %}
语句没有什么不同。