在 ansible 中组合两个哈希值



我想使用 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 文档上组合过滤器

最新更新