仅当任务1通过异步轮询超时时才执行任务2

时间:2018-02-21 10:15:23

标签: ansible ansible-2.x

仅当任务1未在异步时间内完成时才想执行任务2.

基本上,如果我想在catalina.out中在120秒内没有得到字符串“Server Startup”字符串的情况下邮寄catalina.out日志文件。

但是任务2每次都在执行,我希望它只在异步操作失败时执行。

任务1:

- name: Check startup status in logs
    shell: sh -c 'tail -f  --pid=$$ /opt/data/tomcat/{{ lookup('file', '/etc/ansible/scripts/deployment/check.ini') }}/logs/catalina.out | { grep -i -m 1 "Server startup in" && kill $$ || true ;}' || exit 0 ; 
    ignore_errors: yes
    async: 120
    poll: 10
    notify:
    - send mail

任务2:

handlers:
    - name: send mail
      mail:
        to: mayank.arora@test.com
        subject: |
               {body code}

1 个答案:

答案 0 :(得分:0)

处理程序的设计目的不同。

您需要做的就是注册第一个任务的返回值,只有当任务第一个任务失败时才运行第二个任务:

- name: Check startup status in logs
  shell: sh -c 'tail -f  --pid=$$ /opt/data/tomcat/{{ lookup('file', '/etc/ansible/scripts/deployment/check.ini') }}/logs/catalina.out | { grep -i -m 1 "Server startup in" && kill $$ || true ;}' || exit 0 ; 
  ignore_errors: yes
  async: 120
  poll: 10
  register: my_task

- name: send mail
  mail:
    to: mayank.arora@test.com
    subject: |
           {body code}
  when: my_task.failed