【问题标题】:Variable in Jinja2 For LoopJinja2 For 循环中的变量
【发布时间】:2016-07-05 21:02:45
【问题描述】:

我们正在尝试想出一种在 jinja2 For 循环中使用 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 %}

【问题讨论】:

    标签: ansible jinja2


    【解决方案1】:

    它计算 {{ tt_release }} 而不是变量的值。

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-11-27
      • 2019-06-14
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      相关资源
      最近更新 更多