将dict的ansible列表转换为不同结构的json



我有点不知道如何将dicts列表转换为json结构,该结构需要作为变量发送到另一个模块

首先,我有一个dict列表,描述了我正在创建的"团队"的所有信息(在awx/Tower中(。这个列表详细介绍了我的团队的一些信息。对于我需要做的下一次更新,并不是所有的都需要转换成JSON结构

awxTeamsDefinition:
- { teamname: Team1, ldapgroupname: tower-team-1, description: This is tower team 1, organization: orgA }
- { teamname: Team2, ldapgroupname: tower-team-2, description: This is tower team 2, organization: orgA }
- { teamname: Team3, ldapgroupname: tower-team-3, description: This is tower team 3, organization: orgB }  
- { teamname: Team4, ldapgroupname: tower-team-4, description: This is tower team 4, organization: orgB }

接下来,我需要提取一些信息,并将其粘贴在JSON结构中,如下所示:

{
"Team1": {
"remove": true,
"organization": "orgA",
"users": "cn=tower-team-1,cn=groups,cn=accounts,dc=domain,dc=com"
},
"Team2": {
"remove": true,
"organization": "orgA",
"users": "cn=tower-team-2,cn=groups,cn=accounts,dc=domain,dc=com"
},
"Team3": {
"remove": true,
"organization": "orgB",
"users": "cn=tower-team-3,cn=groups,cn=accounts,dc=domain,dc=com"
},
"Team4": {
"remove": true,
"organization": "orgB",
"users": "cn=tower-team-4,cn=groups,cn=accounts,dc=domain,dc=com"
}
}

我需要一个变量中的JSON结构,以便传递到另一个模块中。

这简直超出了我的能力范围。我不知道如何从dict中提取并提升每个json条目的索引(在本例中为"teamname"(,去掉"description",并使用"ldapgroupname"替换为cn结构。如有任何帮助,我们将不胜感激。谢谢

下面的任务

- set_fact:
data1: "{{ data1|default({})|
combine({item.teamname:
{'remove': true,
'organization': item.organization,
'users': 'cn=' ~ item.ldapgroupname ~ users_append}}) }}"
loop: "{{ awxTeamsDefinition }}"
vars:
users_append: ",cn=groups,cn=accounts,dc=domain,dc=com"
- debug:
var: data1|to_nice_json

给出

data1|to_nice_json: |-
{
"Team1": {
"organization": "orgA",
"remove": true,
"users": "cn=tower-team-1,cn=groups,cn=accounts,dc=domain,dc=com"
},
"Team2": {
"organization": "orgA",
"remove": true,
"users": "cn=tower-team-2,cn=groups,cn=accounts,dc=domain,dc=com"
},
"Team3": {
"organization": "orgB",
"remove": true,
"users": "cn=tower-team-3,cn=groups,cn=accounts,dc=domain,dc=com"
},
"Team4": {
"organization": "orgB",
"remove": true,
"users": "cn=tower-team-4,cn=groups,cn=accounts,dc=domain,dc=com"
}
}

最新更新