我有一個變量,它是一個數組[{'foo':1},{'bar':2}]
。 我想把它具有以下哈希合併:{'baz':3}
使用一組事實如我的輸出變量註冊爲(?):Ansible&Jinja2:將字典組合到列表的每個元素
[{'foo':1, 'baz':3},{'bar':2, 'baz':3}]
我進去看了combine
過濾器,但它僅適用時,我已經有一個哈希工作。在我的情況下,我有一個數組。
有沒有一種方法可以實現使用ansible?
我有一個變量,它是一個數組[{'foo':1},{'bar':2}]
。 我想把它具有以下哈希合併:{'baz':3}
使用一組事實如我的輸出變量註冊爲(?):Ansible&Jinja2:將字典組合到列表的每個元素
[{'foo':1, 'baz':3},{'bar':2, 'baz':3}]
我進去看了combine
過濾器,但它僅適用時,我已經有一個哈希工作。在我的情況下,我有一個數組。
有沒有一種方法可以實現使用ansible?
其實,我已經找到一種方法。 map
可以與任何過濾器一起使用,並且論點爲逗號
- name: test
set_fact:
_test: "{{ [{'foo':1}, {'bar':2}] | map('combine', {'baz':3}) | list }}"
產生後進行傳遞:
ok: [localhost] => {
"_test": [
{
"baz": 3,
"foo": 1
},
{
"bar": 2,
"baz": 3
}
]
}
的Jinja2沒有列表理解,但我認爲你可以使用set
和for
循環來實現它:
{% set outputarray = [] -%}
{% for d in inputarray -%}
{% set r = d|combine({'baz': 3}) -%}
{{ ouputarray.append(r) and '' }}
{%- endfor %}
是的,我忘了'地圖'過濾器。 –