Loops 循环期间模块执行的Ansible更新变量
我需要使用ansible完成以下工作:Loops 循环期间模块执行的Ansible更新变量,loops,ansible,Loops,Ansible,我需要使用ansible完成以下工作: 1.向WebApi发送Http Post reuqest 2.检查响应是否满足要求,否则从响应中提取一些数据 3.发送另一个Http Post请求,其正文中填充了在步骤2中获得的数据 4.循环步骤1到步骤3,直到响应满足要求 我的代码如下所示,但它不起作用。finished_res在uri模块中似乎永远没有定义。我的意思是,uri模块中的变量finished_res似乎永远不会更改,因为我一直在服务器中接收相同的请求体。然而,当finished\u res
1.向WebApi发送Http Post reuqest
2.检查响应是否满足要求,否则从响应中提取一些数据
3.发送另一个Http Post请求,其正文中填充了在步骤2中获得的数据
4.循环步骤1到步骤3,直到响应满足要求
我的代码如下所示,但它不起作用。
finished_res
在uri
模块中似乎永远没有定义。我的意思是,
uri
模块中的变量finished_res
似乎永远不会更改,因为我一直在服务器中接收相同的请求体。然而,当finished\u res
在循环外工作时,我可以看到调试消息
- hosts: all
remote_user: ubuntu
gather_facts: no
vars:
default_job_list: "xxx,yyy,zzz,aaa,bbb"
tasks:
- name: test is jobs finish
uri:
url: "{{ API_URL }}"
method: POST
body: "{% if finished_res is defined %}{{ finished_res.json.remainingJobs }}{% else %}{{ default_job_list }}{% endif %}"
return_content: yes
register: finished_res
changed_when: True
until: finished_res is defined and finished_res.json is defined and finished_res.json.status is defined and finished_res.json.status != "FALSE"
- set_fact:
RES: "{{ finished_res }}"
- debug: msg="{{ RES }}"
-主持人:全部
远程用户:ubuntu
收集事实:不
变量:
默认作业列表:“xxx、yyy、zzz、aaa、bbb”
任务:
-名称:测试作业已完成
uri:
url:“{API_url}}”
方法:邮寄
正文:“{if finished_res is defined%}{{finished_res.json.remainingJobs}{%else%}{{{default_job_list}}{%endif%}”
返回内容:是
寄存器:已完成
更改时间:True
直到:finished_res已定义且finished_res.json已定义且finished_res.json.status已定义且finished_res.json.status!=“假”
-设定事实:
RES:“{{finished_RES}}”
-调试:msg=“{RES}}”
有人能帮我吗?提前谢谢 最后,我用另一种方法解决了这个问题:创建一个新的ansible模块