You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible使用uri模块GET请求Azure资源创建状态报错如何解决

问题解决方案

错误根源

  • 第一类低级错误:变量名拼写不一致,你代码中register定义的变量是new_re_result,但报错日志里的判断条件出现了new_pe_result.json.status,先确认是否手动输入时打错了变量名。
  • 第二类结构判断缺失:轮询前几次请求时,Azure异步接口可能还未返回完整的带status字段的JSON结构,直接访问new_re_result.json.status会因为层级属性不存在抛出异常。

修复方案

1. 优化条件判断,增加属性存在性校验

在until条件中先逐层判断属性是否存在,再做值对比,同时给uri模块增加明确的JSON解析配置,修改后的完整代码如下:

- name: fetch the result of the resource creation command
  uri:
    url: "{{ new_re.azure_asyncoperation }}"
    method: GET
    status_code: 200
    headers:
      Authorization: "Bearer {{ token }}"
    return_content: yes
    body_format: json
  register: new_re_result
  until: >
    new_re_result.json is defined 
    and new_re_result.json.status is defined 
    and new_re_result.json.status == "Succeeded"
  delay: "{{ var_delay }}"
  retries: "{{ var_retries }}"

2. 额外排查方案

如果修改后仍报错,可在该任务前临时加一个调试任务打印完整响应结构,确认实际返回的字段路径:

- name: debug response structure
  uri:
    url: "{{ new_re.azure_asyncoperation }}"
    method: GET
    headers:
      Authorization: "Bearer {{ token }}"
  register: debug_resp
- debug:
    var: debug_resp

部分Azure异步接口的状态字段可能不是根路径下的status,而是嵌套在properties下的provisioningState,可根据实际返回的结构调整until里的字段路径即可。

内容的提问来源于stack exchange,提问作者MoonHorse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:48:03