Jinja2 For Loop中的变量

时间:2016-07-05 21:02:46

标签: ansible jinja2

我们正试图想出一种在jinja2 For Loops中使用ansible事实的方法。

例如,我想获取属于我的memcached组的所有服务器以及基于发布的组(类似tag_release_devtag_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 %}

1 个答案:

答案 0 :(得分:2)

  

它评估{{ tt_release }}而不是变量的值。

这是因为你已经在表达式中。你无法嵌套表达 - 而且你不需要。

您想要的是连接字符串"tag_release_"和变量tt_release。在Jinja2中,使用+进行连接。

{% for host in groups["tag_function_mem"] | intersect(groups["tag_release_" + tt_release]) %}