仅当任务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}
答案 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