Process

---
- 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没有被通告执行)
原文地址:https://www.cnblogs.com/metasequoia/p/5466000.html