簡體   English   中英

Ansible-修改variable.stdout子字段

[英]Ansible - modify variable.stdout subfield

我有一個ansible shell任務的輸出,它是一個json:

stdout: {
  "override_attributes": {
    "prod": {
      "hosts": [
        "10.100.0.150",
        "10.100.0.151"
]
}}}

我想修改IP,如下所示:

set_fact: variable.stdout.override_attributes.prod.hosts=groups['GROUP_A']

之后,我希望看到完整的json修改后的variable.stdout

這可能嗎?

combine過濾器有一個丑陋的解決方案:

---
- hosts: localhost
  vars:
    stdout: {
      "override_attributes": {
        "prod": {
          "hosts": [
            "10.100.0.150",
            "10.100.0.151"
           ],
          "users": [
            "user1",
            "user2"
          ]
    }}}
    new_hosts:
      - host_name1
      - host_name2
  tasks:
    # original stdout
    - debug: var=stdout
    # update override_attributes.prod.hosts with new_hosts
    - set_fact:
        stdout: "{{stdout | combine({\"override_attributes\":{\"prod\":{\"hosts\":new_hosts} } }, recursive=True )}}"
    # updated stdout, users list unchanged
    - debug: var=stdout

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM