我具有以下结构
volumeGroupName:
- name: datavg1
log_lv:
name: logs_lv
size: "1G"
app_lv:
name: apps_lv
size: 2G
project_lv:
name: projects_lv
size: 3G
- name: datavg2
log_lv:
name: logs_lv
size: "4G"
我想遍历所有项目。我尝试使用的是 with_subelements ,但是我只能得到一个类别,例如 apps_lvm ,我也尝试了 wih_dict 属性,但是我无法获得什么我想要。
也许我用于变量的结构不是正确的结构?
答案 0 :(得分:0)
从字典列表中创建列表字典。例如
- set_fact:
GroupVolumeList: "{{ dict(my_groups|zip(my_volumes)) }}"
vars:
my_groups: "{{ volumeGroupName|map(attribute='name')|list }}"
my_volumes: "{{ volumeGroupName|map('dict2items')|list }}"
- debug:
var: GroupVolumeList
给予
GroupVolumeList:
datavg1:
- key: name
value: datavg1
- key: log_lv
value:
name: logs_lv
size: 1G
- key: app_lv
value:
name: apps_lv
size: 2G
- key: project_lv
value:
name: projects_lv
size: 3G
datavg2:
- key: name
value: datavg2
- key: log_lv
value:
name: logs_lv
size: 4G
然后使用 with_subelements 。例如
- debug:
msg: "{{ item.0.key }}
{{ item.1.key }}
{{ item.1.value.name }}
{{ item.1.value.size }}"
with_subelements:
- "{{ GroupVolumeList|dict2items }}"
- value
when: item.1.key != 'name'
给予(删节)
msg: datavg1 log_lv logs_lv 1G
msg: datavg1 app_lv apps_lv 2G
msg: datavg1 project_lv projects_lv 3G
msg: datavg2 log_lv logs_lv 4G