我正在使用 ansible 2.9,无法找到一种方法来将下面的 JSON 结构附加到数据中
"Variables":[
{
"Strings": [
"abc",
"xyz"
],
"Inputs": true
}
]
我想在字符串中添加“efg”,但不确定其中要使用的语法是什么。使用 Ansible set_fact 来附加它。
我知道我们可以使用combine_filter来做到这一点,但我想这只适用于ansible 2.10。关于如何做到这一点有什么建议吗?
答案1
您可以使用结合过滤器在 2.9 中可用。它自 2.3 开始就已存在于 Ansible 中。2.9 中无法使用选项list_merge
。在这种情况下,您可以自行迭代列表并合并列表,例如 play
- hosts: localhost
vars:
to_add: efg
Variables:
- Strings: [abc, xyz]
Inputs: true
tasks:
- set_fact:
V2: "{{ V2|d([]) + [item|combine({'Strings': _Strings})] }}"
loop: "{{ Variables }}"
vars:
_Strings: "{{ item.Strings + [to_add] }}"
- set_fact:
Variables: "{{ V2 }}"
- debug:
var: Variables
完成工作
Variables:
- Inputs: true
Strings:
- abc
- xyz
- efg