如何解决Ansible Jinja模板:可变数量的组密钥
我正在编写一个shell ansible脚本,我要做的一件事是使用jinja2从清单文件中填充一个ini文件中的列表。
当前,它使用变量component_group_1和component_group_2作为组密钥,并从那里填充组件列表。
components: "{{groups[component_group_1]+groups[component_group_2]}}"
我该如何重写此行,以便它可以仅接受一个名为all_component_groups的变量,该变量具有此模式“客户,供应商,产品...”中的所有必需组键,以及在哪里可以可以有多少个组密钥?
解决方法
将您的var作为列表会容易得多:
all_component_groups_list:
- group1
- group2
- group3
与此同时,从您的模式创建列表很容易
all_components_groups: "customers,vendors,products"
all_components_groups_list: "{{ all_components_groups.split(',') }}"
一旦你知道了,其余的也很容易:
- 使用
map
=>extract
从groups
字典中提取相关列表 -
flatten
列表列表,以获得包含所有值的单个列表 - 使用
unique
过滤器删除可能重复的值
将所有内容从昏迷列表要求中放在一起
components: "{{ all_component_groups.split(',') | map('extract',groups) | flatten | unique }}"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。