我们正试图想出一种在jinja2 For Loops中使用ansible事实的方法。
例如,我想获取属于我的memcached组的所有服务器以及基于发布的组(类似tag_release_dev
或tag_release_prod
)。当我尝试在For循环中使用{{ tt_release }}
时,它会评估{{ tt_release }}
而不是变量的值。有没有办法在循环定义中使用变量?
{% for host in groups["tag_function_mem"] | intersect(groups["tag_release_{{ tt_release }}"]) %}
{{ host }}:11211
{%- if not loop.last %},{% endif %}
{%- if loop.last %}"{% endif %}
{% endfor %}
{% endif %}
答案 0 :(得分:2)
它评估
{{ tt_release }}
而不是变量的值。
这是因为你已经在表达式中。你无法嵌套表达 - 而且你不需要。
您想要的是连接字符串"tag_release_"
和变量tt_release
。在Jinja2中,使用+
进行连接。
{% for host in groups["tag_function_mem"] | intersect(groups["tag_release_" + tt_release]) %}