我想使用 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} 样式。
你只需要使用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" } } }
您可以在此处获取更多信息:在 Ansible 文档上组合过滤器