Ansible更新变量,用于在循环期间执行模块

时间:2018-08-09 10:01:22

标签: loops ansible

我需要使用ansible来完成以下工作:
 1.将Http Post请求发送到WebApi
 2.检查响应是否符合要求,否则从响应中提取一些数据
 3.发送另一个Http Post请求,其正文中填充了步骤2中获得的数据
 4.将步骤1循环到步骤3,直到响应符合要求

我的代码如下,但是没有用。

finished_res模块中的uri似乎永远都没有定义。
我的意思是是finished_res模块中的变量uri似乎永远不会改变,因为我在服务器中不断收到相同的请求正文。但是,循环之外的finished_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 }}"

有人可以帮助我吗?预先感谢!

1 个答案:

答案 0 :(得分:0)

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