首页 > 解决方案 > 循环期间模块执行的 Ansible 更新变量

问题描述

我需要使用 ansible 来完成以下工作:
1. 向 WebApi 发送一个 Http Post 请求
2. 检查响应是否满足要求,否则从响应中提取一些数据
3. 发送另一个 Http Post 请求,正文填充数据进入第 2 步
4. 循环第 1 步到第 3 步,直到响应满足要求

我的代码如下,但它不起作用。

似乎在模块finished_res内部永远未定义。我的意思是模块内的变量似乎永远不会改变,因为我一直在服务器中收到相同的请求正文。但是,循环外部有效,我可以看到调试消息。uri
finished_resurifinished_res

- 主持人:所有
  远程用户:ubuntu
  收集事实:没有
  变量:
    default_job_list: "xxx,yyy,zzz,aaa,bbb"

  任务:
    - 名称:测试是工作完成
      网址:
        网址:“{{ API_URL }}”
        方法:POST
        正文:“{% 如果定义了 finished_res %}{{ finished_res.json.remainingJobs }}{% else %}{{ default_job_list }}{% endif %}”
        返回内容:是的
      注册:finished_res
      改变时间:真
      直到:finished_res 已定义,finished_res.json 已定义,finished_res.json.status 已定义且finished_res.json.status != "FALSE"

    - 设置事实:
        回复:“{{完成_res }}”

    - 调试:msg="{{ RES }}"

有人可以帮助我吗?提前致谢 !

标签: loopsansible

解决方案


最后,我用另一种方式解决了这个问题:创建一个新的 ansible 模块


推荐阅读