我正在尝试使用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
并将一个项目添加到一个集合中?
答案 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 }}