Python Ansible:将值从一个字典替换到另一个字典,而不添加整个字典
正如标题所示,如果一个dict的键在另一个dict中找到,我希望将两个dict组合在一起;使用第二个dict的值 比如说 第1条:Python Ansible:将值从一个字典替换到另一个字典,而不添加整个字典,python,ansible,Python,Ansible,正如标题所示,如果一个dict的键在另一个dict中找到,我希望将两个dict组合在一起;使用第二个dict的值 比如说 第1条: { "test": "replace me", "test2": "some value" } 第2条: { "test": "replaced", "test3": "Don't add" } 综合结果: { "test": "replaced", "test2": "some value" } 下面是剧本 shell> cat
{
"test": "replace me",
"test2": "some value"
}
第2条:
{
"test": "replaced",
"test3": "Don't add"
}
综合结果:
{
"test": "replaced",
"test2": "some value"
}
下面是剧本
shell> cat playbook.yml
- hosts: localhost
vars:
dict1:
test: "replace me"
test2: "some value"
dict2:
test: "replaced"
test3: "Don't add"
tasks:
- set_fact:
dict1: "{{ dict1|combine({item: dict2[item]}) }}"
loop: "{{ dict1.keys()|list|intersect(dict2.keys()|list) }}"
- debug:
var: dict1
给予
您可能想检查dict.update()是否尝试使用它,但我不确定我是否理解如何访问“事实”
--name:Deploy and update Lambda hosts:localhost#gather#u facts:no connection:localtasks:-name:command:“echo'test'”set_fact:dict1:{{list.0.env_vars}}”dict2:{{lookup('hashi_vault',vault_string)}”-名称:vault 2 set_fact:dict1:{{dict1}组合({item:dict2[item]}}})循环:{{{dict1.keys()| list}相交(dict2.keys()| list)}”-debug:msg:{{ansible_facts}
这就是我要发布的内容,但如果我尝试在多个任务中使用set fact,则会引发错误
shell> ansible-playbook playbook.yml
...
ok: [localhost] => {
"dict1": {
"test": "replaced",
"test2": "some value"
}
}