我有一个这样定义的变量:
my_list:
- key1: abc
key2: xyz
list1:
- a
- b
- c
my_hash:
a: p
b: q
c: r
在我的剧本中,我想将list1映射到my_hash中的对应条目。 即我想得到最终结果为...
my_list:
- key1: abc
key2: xyz
list1:
- a
- b
- c
list2:
- p
- q
- r
my_hash:
a: p
b: q
c: r
答案 0 :(得分:0)
设法得到我想要的。如果有人可以提供更优化的解决方案,我真的很感兴趣。
---
- hosts: localhost
vars:
mylist1:
- key1: a
key2: b
mysublist:
- x
- y
- z
- key1: c
key2: d
mysublist:
- t
- u
- y
- z
myhash:
- hkey: t
hval: testa
- hkey: u
hval: testb
- hkey: x
hval: testc
- hkey: y
hval: testd
- hkey: z
hval: teste
tasks:
- set_fact:
tempdict: "{{tempdict|default({})|combine({item.hkey: item.hval})}}"
loop: "{{myhash}}"
- set_fact:
testvar: {}
- set_fact:
testvar: "{{testvar|combine({item.key1: []})}}"
loop: "{{mylist1}}"
- set_fact:
testvar: "{{testvar|combine({item[0].key1: testvar[item[0].key1] + [tempdict[item[1]]]})}}"
loop: "{{mylist1|subelements('mysublist')}}"
- debug:
var: testvar