我正在尝试使用 Ansible 合并以下 2 个数组:
TASK [Show var1] ****************************************************************************
ok: [localhost] => {
"var1": [
{
"id": "133"
},
{
"id": "149"
},
{
"id": "188"
}
]
}
和
TASK [Show var2] ****************************************************************************
ok: [localhost] => {
"var2": [
{
"name": "two"
},
{
"name": "one"
},
{
"name": "three"
}
]
}
结果应该是:
"var1": [
{
"id": "133",
"name": "two"
},
{
"id": "149",
"name": "one"
},
{
"id": "188",
"name": "three"
}
]
到目前为止,我为合并所做的努力……只返回了最后一对。我怎样才能合并整个数组?
最佳答案
这是一种可能的解决方案;我们使用 set_fact
和 combine
过滤器,循环遍历 var1|zip(var2)
:
- hosts: localhost
gather_facts: false
vars:
var1:
- id: 133
- id: 149
- id: 188
var2:
- name: two
- name: one
- name: three
tasks:
- set_fact:
var3: "{{ var3 + [item[0]|combine(item[1])] }}"
vars:
var3: []
loop: "{{ var1|zip(var2)|list }}"
- debug:
msg: "{{ var3 }}"
(有关 set_fact 和 combine 的信息,请参阅文档)。
这将输出:
PLAY [localhost] *****************************************************************************************************************************************************************************
TASK [set_fact] ******************************************************************************************************************************************************************************
ok: [localhost] => (item=[{'id': 133}, {'name': 'two'}])
ok: [localhost] => (item=[{'id': 149}, {'name': 'one'}])
ok: [localhost] => (item=[{'id': 188}, {'name': 'three'}])
TASK [debug] *********************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": [
{
"id": 133,
"name": "two"
},
{
"id": 149,
"name": "one"
},
{
"id": 188,
"name": "three"
}
]
}
PLAY RECAP ***********************************************************************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
关于json - Ansible 合并 2 个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61544406/