Ansible使用密钥匹配将两个嵌套的json文件合并到单个文件中
我有两个json,希望将一个附加到另一个json中,并将它们保存在一个文件中。我已经做了一系列的工作来读取这些值,并使用以下方法将它们放入变量中:Ansible使用密钥匹配将两个嵌套的json文件合并到单个文件中,json,ansible,Json,Ansible,我有两个json,希望将一个附加到另一个json中,并将它们保存在一个文件中。我已经做了一系列的工作来读取这些值,并使用以下方法将它们放入变量中: - name: Set json combine to add new event set_fact: event_json_create: "{{ lookup('file', 'event_template.json') }}" - name: Set json combine to get the existing list
- name: Set json combine to add new event
set_fact:
event_json_create: "{{ lookup('file', 'event_template.json') }}"
- name: Set json combine to get the existing list of events
set_fact:
event_json_existing: "{{ lookup('file', 'notification.json') }}"
现在,我想将event_json_create附加到event_json_existing
事件_json_create如下所示:
"event_json_create": {
"LambdaFunctionConfigurations": [{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:*******:function:xyz"
}]
}
"event_json_existing": {
"LambdaFunctionConfigurations": [{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:******:function:abc"
}],
"TopicConfigurations": [{
"TopicArn": "arn:aws:sns:us-east-1:xxxxxx:crt"
}]
}
事件_json_existing如下所示:
"event_json_create": {
"LambdaFunctionConfigurations": [{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:*******:function:xyz"
}]
}
"event_json_existing": {
"LambdaFunctionConfigurations": [{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:******:function:abc"
}],
"TopicConfigurations": [{
"TopicArn": "arn:aws:sns:us-east-1:xxxxxx:crt"
}]
}
我如何在ansible中附加这两个json,确保这两个json都在主组:lambdFunctionConfiguration下,并保留TopicConfiguration的剩余内容,然后我可以将其写入json文件。因此,我期望的结果是:
{
"LambdaFunctionConfigurations": [
{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:*******:function:xyz"
},
{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:*******:function:abc"
}
],
"TopicConfigurations": [
{
"TopicArn": "arn:aws:sns:us-east-1:xxxxxx:crt"
}
]
}
请帮忙 (作为问题转换的一个例子)
问:根据下面的字典
获得输出
expected:
dict1:
- key1: value1
- key1: value2
dict2:
- key2: value3
将输出写入JSON格式的文件
A:下面的任务是什么
- set_fact:
events: "{{ events|default({})|
combine({item: existing[item]|default([]) +
create[item]|default([])}) }}"
loop: "{{ (create.keys()|list + existing.keys()|list)|unique }}"
- template:
src: events.json.j2
dest: events.json
使用模板
shell> cat events.json.j2
{{ events|to_nice_json }}
给予
shell> cat events.json
{
"dict1": [
{
"key1": "value2"
},
{
"key1": "value1"
}
],
"dict2": [
{
"key2": "value3"
}
]
}