如何解决Ansible 使用数组的值作为键来循环包含多个值的字典
我正在尝试根据目录所属的组以及用户在变量中定义的内容来创建目录。
[web20int]
server1
server2
[web20ext]
server3
[app01dev]
server1
certdir:
web20int:
- intwiki
- intblogs
web20ext:
- wiki
- xblogs
app01dev:
- app01dev
---
- name: Set App Name Key List
set_fact:
ckeys: "{{ certdir.keys()|list }}"
- name: Get Group Names
debug:
msg: "{{ group_names }} "
- name: Get Cert App Names
debug:
msg: item
loop: "{{ ckeys }}"
- name: Setting Union between Group Names and Cert App Names
set_fact:
union_key: "{{ ckeys | intersect(group_names) }}"
- name: Result of union
debug:
var: union_key
这是我不明白如何进行嵌套循环或使用 jini2 模板的地方。 我想遍历 union_key 数组,然后遍历 certdir 并获取要放入另一个数组的值列表
- name: create cert directory for app
file:
path: "{{ item }}"
state: directory
owner: root
group: root
mode: 0755
loop: "{{ <SOME ARRAY THAT CONTAINS THE DIRECTORY NAMES }}"
例如,server1 属于组: [web20int] [app01dev]
因此我希望数组包含: intwiki intblogs app01dev
谢谢
解决方法
union_key | map('extract',certdir)
但这会给你一个列表列表,所以你需要应用 flatten
过滤器:
loop: "{{ union_key | map('extract',certdir) | flatten }}"
(如果 list
给出的是可迭代对象而不是列表,您可能还需要使用 flatten
过滤器)
顺便说一句,变量名和任务名在谈论“联合”,但你在做“交集”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。