Преобразовать словарь управление первый
- set_fact:
mgmt: "{{ mgmt|d({})|combine({item.key: {'Property4': item.value}}) }}"
цикл: "{{управление|dict2items}}"
дает
управление:
сервер1:
Свойство4: ip1_addr
сервер2:
Свойство4: ip2_addr
затем комбинировать словари
- set_fact:
серверы: "{{ серверы|объединить(mgmt, recursive=True) }}"
дает желаемый результат
серверы:
сервер1:
Свойство1: А
Свойство2: Б
Свойство3: С
Свойство4: ip1_addr
сервер2:
Свойство1: А
Свойство2: Б
Свойство3: С
Свойство4: ip2_addr
Если вы хотите повторить результат, проще преобразовать оба словаря в списки.
- set_fact:
mgmt: "{{ mgmt|d([]) + [{'сервер': item.key,
'Свойство4': item.value}] }}"
цикл: "{{управление|dict2items}}"
- set_fact:
srvs: "{{ srvs|d([]) + [{'сервер': item.key}|combine(item.value)] }}"
цикл: "{{серверы|dict2items}}"
дайте
управление:
- Свойство4: ip1_addr
сервер: сервер1
- Свойство4: ip2_addr
сервер: сервер2
срвс:
- Свойство1: А
Свойство2: Б
Свойство3: С
сервер: сервер1
- Свойство1: А
Свойство2: Б
Свойство3: С
сервер: сервер2
Затем используйте Сообщество.Общее фильтр lists_mergeby
- отладка:
msg: "{{ srvs|lists_mergeby(mgmt, 'сервер') }}"
дает
сообщение:
- Свойство1: А
Свойство2: Б
Свойство3: С
Свойство4: ip1_addr
сервер: сервер1
- Свойство1: А
Свойство2: Б
Свойство3: С
Свойство4: ip2_addr
сервер: сервер2