Ansible PUT请求仅更新API数据中的一个属性

时间:2019-06-20 06:35:04

标签: ansible

我正在尝试从GET API JSON结果中更新属性,并仅更改一个属性就对整个API数据进行PUT请求。请就PUT Req Task的格式提出建议?

  1. 获取给定API调用的请求
  2. 从第一步中的上述json数据中,我只需要更新一个属性:mipUser(从“ false”到“ true”),并与json中其他未更改的数据一起执行PUT请求。

我尝试将以下任务用于GET。不知道如何保存整个api结果,然后更新所需的属性并执行POST。也许可以使用文件来完成?

- name: GET Request for CLUSTERS
      uri:
        url: https://zsapi.com/BETA/{{ item }}
        method: GET
        validate_certs: no
        return_content: yes
        status_code: 200
        headers:
          Content-Type: application/json
          Cookie: "{{ login.set_cookie.split(';')[0] }}"
        body_format: json
      with_items: "{{ cluster }}"
      register: cluster_result




ok: [localhost] => {
    "msg": [
        {
            "bandwidthControlApp": true,
            "cloud": "BETA",
            "createTime": 1550875210,
            "datacenter": {
                "id": 526,
                "name": "FMT1"
            },
            "description": "cluster with VIP 169.254.1.100",
            "disabled": false,
            "id": 2334,
            "lastModifiedTime": 1560896398,
            "lastModifiedUser": {
                "id": 1009,
                "name": "adev@xyz.com"
            },
            "mipUser": false,
            "mtsInstances": [],
            "name": "fmt1",
            "rateLimit": true,
        }
    ]
} 

我希望整个API PUT req应该与GET相同,除了我要更新的属性。

1 个答案:

答案 0 :(得分:0)

如果我了解得很清楚,您想将msg中的返回数据中的变量改写为某个新值,然后在后续任务中将其发布到URL吗?如果您将返回的数据注册为事实,这将涉及对该事实的某种操纵。您可以为此使用json_query过滤器。