繁体   English   中英

Jinja2模板:从Ansible变量有条件地形成一个集合

[英]Jinja2 Templating: Conditionally forming a set from Ansible Variables

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

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

{% set types = [] %}

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

{{ types|unique }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM