Ansible

添加 JSON 字典

  • August 18, 2021

我正在使用 ansible 2.9 並且無法尋找在 JSON 結構下方附加數據的方法

"Variables":[
   {
       "Strings": [
           "abc",
           "xyz"
       ],
       "Inputs": true
   }
]

我想在字元串中添加“efg”,但不確定在此使用的語法是什麼。使用 Ansible set_fact 附加它。

我知道我們可以使用 combine_filter 做到這一點,但我猜這只適用於 ansible 2.10。關於如何做到這一點的任何建議。

您可以在 2.9中使用組合過濾器。它從 2.3 開始就在 Ansible 中。在 2.9 中不能使用的是 option list_merge。在這種情況下,您可以自己迭代列表並合併列表,例如播放

- 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

引用自:https://serverfault.com/questions/1074918