Jinja2 Templating:有条件地形成Ansible Variables的集合

时间:2018-02-25 11:19:26

标签: ansible jinja2

我正在尝试使用Jinja2模板和Ansible变量生成一些配置。我目前工作的框架不允许我在Ansible中执行以下操作,因此我希望在Jinja2中获得相同的结果。

我的Ansible变量如下:

---
Top:
  inner:
    type: type1
    other_random_variable:
     - random: 1
  inner2:
    type: type2
  inner3:
    type: type1

当我迭代循环并形成如下配置文件时,上述结构很有效:

{% if Top is defined %}
{% for inner_vars in Top %}
# perform substitution here
{% endfor %}
{% endif %}

我想要做的是形成一组类型,以便为每种唯一类型生成另一种配置。

有没有办法让我遍历Top并将一个项目添加到一个集合中?

1 个答案:

答案 0 :(得分:1)

我认为我有一个可行的解决方案:

{% set types = [] %}

{% if Top is defined%}
{% for inner_var in Top %}
    {% if types.append(Top[inner_var].type) %}{% endif %}
{% endfor %}
{% endif %}

{{ types|unique }}