我想使用ansible结合以下两个哈希。
secret:
env1:
password: p1
public:
env1:
username: u1
结果应该是
combined_hash:
env1:
username: u1
password: p1
我不知道如何在同一任务中结合使用with_dict或with_together过滤器(如果那是正确的方法)。
看来这可能有效(按照http://toroid.org/ansible-combine)
{'a':{'x':1}}|combine({'a':{'y':2}}, recursive=True)
→ {'a':{'x':1, 'y':2}}
但是我对如何将这个硬编码的示例转换为使用{item.0:item.1}样式感到困惑。
答案 0 :(得分:3)
您只需要使用combine
过滤器即可。
$ cat test.yml
---
- hosts: localhost
gather_facts: no
vars:
secret:
env1:
password: p1
public:
env1:
username: u1
tasks:
- name: test combine hashs
set_fact:
combined_hash: "{{ secret | combine(public, recursive=True) }}"
- debug: msg="{{ combined_hash }}"
TASK [debug] ************************************************************************************** ok: [localhost] => { "msg": { "env1": { "password": "p1", "username": "u1" } } }
您可以在此处获取更多信息:Combine filter on Ansible docs