附加 JSON 字典

附加 JSON 字典

我正在使用 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

相关内容