我需要完成类似于Ansible, How to modify a variable during a loop?和Ansible Loop and Update Dict的工作,但是,我需要能够将包含列表的两个词典合并到一个词典中。一个字典存储在组变量文件中,另一个存储在主机变量中:
组变量:
access_control:
- source_address: "10.0.0.1/24"
description: "Test 1"
- source_address: "11.0.0.1/24"
description: "Test 2"
- source_address: "12.0.0.1/24"
description: "Test 3"
主机变量:
access_control_id:
- access_id: "a01"
- access_id: "a06"
期望的结果是每个访问控制id应用于每个访问控制项:
"combined_access_control": [
{
"source_address": "10.0.0.1/24"
"description": "Test 1"
"access_id": "a01"
},
{
"source_address": "10.0.0.1/24"
"description": "Test 1"
"access_id": "a06"
},
{
"source_address": "11.0.0.1/24"
"description": "Test 2"
"access_id": "a01"
},
{
"source_address": "11.0.0.1/24"
"description": "Test 2"
"access_id": "a06"
},
{
"source_address": "12.0.0.1/24"
"description": "Test 3"
"access_id": "a01"
},
{
"source_address": "12.0.0.1/24"
"description": "Test 3"
"access_id": "a06"
},
]
我想我可以用这样的东西:
- name: Combine variables into one dict
set_fact:
combined_access_control: "{{ combined_access_control| default ([item.1]) + [ { 'access_id': item.1.access_id } ] }}"
loop: "{{ access_control | product (access_control_id)| list }}"
但我只得到一本带有访问ID的词典:
"combined_access_control": [
{
"access_id": "a01"
},
{
"access_id": "a06"
},
{
"access_id": "a01"
},
{
"access_id": "a06"
},
{
"access_id": "a01"
},
{
"access_id": "a06"
}
],
您需要合并列表中的dict,并将其附加到列表中,如下所示:
相关问题 更多 >
编程相关推荐