Convertiți dicționarul management primul
- set_fact:
mgmt: „{{ mgmt|d({})|combină({item.key: {'Property4': item.value}}) }}"
buclă: „{{ management|dict2items }}”
dă
administrare:
server1:
Proprietatea 4: ip1_addr
server2:
Proprietatea 4: ip2_addr
Atunci combina dicţionarele
- set_fact:
servere: „{{ servere|combine(mgmt, recursive=True) }}”
dă rezultatul dorit
servere:
server1:
Proprietatea 1: A
Proprietatea 2: B
Proprietatea 3: C
Proprietatea 4: ip1_addr
server2:
Proprietatea 1: A
Proprietatea 2: B
Proprietatea 3: C
Proprietatea 4: ip2_addr
Dacă doriți să repetați rezultatul, este mai ușor să convertiți ambele dicționare în liste
- set_fact:
mgmt: „{{ mgmt|d([]) + [{'server': item.key,
„Proprietate4”: item.value}] }}”
buclă: „{{ management|dict2items }}”
- set_fact:
srvs: „{{ srvs|d([]) + [{'server': item.key}|combine(item.value)] }}”
buclă: „{{ servere|dict2items }}”
da
administrare:
- Proprietatea 4: ip1_addr
server: server1
- Proprietatea 4: ip2_addr
server: server2
srvs:
- Proprietatea 1: A
Proprietatea 2: B
Proprietatea 3: C
server: server1
- Proprietatea 1: A
Proprietatea 2: B
Proprietatea 3: C
server: server2
Apoi folosiți Comunitate.General filtru lists_mergeby
- depanare:
msg: "{{ srvs|lists_mergeby(mgmt, 'server') }}"
dă
mesaj:
- Proprietatea 1: A
Proprietatea 2: B
Proprietatea 3: C
Proprietatea 4: ip1_addr
server: server1
- Proprietatea 1: A
Proprietatea 2: B
Proprietatea 3: C
Proprietatea 4: ip2_addr
server: server2