Ansible & Jinja2:将字典组合到列表的每个元素

Ste*_*ane 4 jinja2 ansible-playbook

我有一个数组变量[{'foo':1},{'bar':2}]。我想将它与以下哈希结合起来:{'baz':3}使用设置事实(?),例如我的输出注册变量是:

[{'foo':1, 'baz':3},{'bar':2, 'baz':3}]
Run Code Online (Sandbox Code Playgroud)

我已经查看了combine过滤器,但它仅在我已经有一个哈希值时才有效。就我而言,我有一个数组。

有没有办法使用ansible来实现这一目标?

Ste*_*ane 6

其实我已经找到方法了。map可以与任何过滤器一起使用,并且参数必须在逗号后传递

- name: test
  set_fact:
    _test: "{{ [{'foo':1}, {'bar':2}] | map('combine', {'baz':3}) | list }}"
Run Code Online (Sandbox Code Playgroud)

产生:

ok: [localhost] => {
    "_test": [
        {
            "baz": 3, 
            "foo": 1
        }, 
        {
            "bar": 2, 
            "baz": 3
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)