Jinja2 For 循环中的变量

Variable in Jinja2 For Loop

我们正在尝试想出一种在 jinja2 For 循环中使用 ansible facts 的方法。

例如,我想获取属于我的 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 %}

it evaluates {{ tt_release }} rather than the value of the variable.

这是因为您已经在表达式中了。您不能嵌套表达式 - 也不需要。

你想要的是连接字符串"tag_release_"和变量tt_release。在 Jinja2 中,连接是通过 +.

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