我有一个数组[{'foo':1},{'bar':2}]
的变量。
我想将它与以下哈希结合使用:{'baz':3}
使用set fact(?),例如我的输出注册变量是:
[{'foo':1, 'baz':3},{'bar':2, 'baz':3}]
我查看了combine
过滤器,但只有当我已经有哈希才能使用时它才有用。在我的情况下,我有一个数组。
有没有办法用ansible实现这个目标?
答案 0 :(得分:3)
实际上,我找到了一种方法。 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
}
]
}
答案 1 :(得分:0)
Jinja2没有列表理解,但我认为你可以使用for
和{% set outputarray = [] -%}
{% for d in inputarray -%}
{% set r = d|combine({'baz': 3}) -%}
{{ ouputarray.append(r) and '' }}
{%- endfor %}
循环来实现它:
$s = $line -replace '|', ','