--- - hosts: test gather_facts: false tasks: - name: Task1 shell: ls notify: Hander3 - name: Task2 shell: ls notify: Hander1 ignore_errors: true - name: Task3 shell: ls notify: Hander2 handlers: - name: Hander1 debug: msg="one" - name: Hander2 debug: msg="two" - name: Hander3 debug: msg="three"
Q&A
1、如果某个task或hander执行错误 那么整个执行流程终止 它后面的操作就不会再执行(除非设置ignore_errors: true)
Example:
Output:(Task3执行失败 但设置跳过error所以执行流程没有中断 但Hander2不会被通知 Hander1执行失败 没有设置跳过error 所以执行流程终止)
2、(1)round1:Task1执行成功(已经在目的机器成功添加ansible用户)并notify Hander3,Task3执行失败 整个流程终止. (2)round2 修改Task3 使流程执行成功,但Hander3不会被Task1通告执行 因为Task1已经在round1执行过了 round2 Task1的执行状态显示ok 不是changed
Example:(round2 Task3修改dvgsd为正确命令)
Output:
(1)round1
(2)round2(Task1的状态为ok Hander3没有被通告执行)