ANSIBLE12(force_handlers)
---- name: force handlers
hosts: server2.example.com
force_handlers: yes
tasks:
- name: a
shell: "/bin/true"
notify: h_shell
- name: a shell
yum:
name: notapkg
state: latest
handlers:
- name: h_shell
service:
name: mariadb
state: restarted
注释和未注释handlers的输出差异:
$ ansible-playbookv6-4_server2.yml
PLAY ****************************************************************************************************************************************************
TASK ***************************************************************************************************************************************************
ok:
TASK *****************************************************************************************************************************************************************
fatal: : FAILED! => {"changed": true, "cmd": "/bin/true1", "delta": "0:00:00.006282", "end": "2020-08-12 22:03:19.083473", "msg": "non-zero return code", "rc": 127, "start": "2020-08-12 22:03:19.077191", "stderr": "/bin/sh: /bin/true1: No such file or directory", "stderr_lines": ["/bin/sh: /bin/true1: No such file or directory"], "stdout": "", "stdout_lines": []}
PLAY RECAP ***************************************************************************************************************************************************************
server2.example.com : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
以上是把/bin/true改成/bin/true1,仍然保留force_handlers,但是不触发handler
$ ansible-playbookv6-4_server2.yml
PLAY ****************************************************************************************************************************************************
TASK ***************************************************************************************************************************************************
ok:
TASK *****************************************************************************************************************************************************************
changed:
shell模块永远都是黄的,changed
TASK ***********************************************************************************************************************************************************
fatal: : FAILED! => {"changed": false, "failures": ["No package notapkg available."], "msg": "Failed to install some of the specified packages", "rc": 1, "results": []}
RUNNING HANDLER ************************************************************************************************************************************************
PLAY RECAP ***************************************************************************************************************************************************************
server2.example.com : ok=2 changed=1 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
以上这一段,是没有写force_handlers的(都是/bin/true)。
下面这一段是写了force_handlers的(都是/bin/true)。
$ ansible-playbookv6-4_server2.yml
PLAY ****************************************************************************************************************************************************
TASK ***************************************************************************************************************************************************
ok:
TASK *****************************************************************************************************************************************************************
changed:
shell模块永远都是黄的,changed
TASK ***********************************************************************************************************************************************************
fatal: : FAILED! => {"changed": false, "failures": ["No package notapkg available."], "msg": "Failed to install some of the specified packages", "rc": 1, "results": []}
RUNNING HANDLER ************************************************************************************************************************************************
changed:
PLAY RECAP ***************************************************************************************************************************************************************
server2.example.com : ok=3 changed=2 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
$
如果task a(出发handler的那个task)是绿的,即使force_handlers也不会执行handler:
---
- name: force handlers
hosts: server2.example.com
force_handlers: yes
tasks:
- name: a
service:
name: sshd
state: started
enabled: yes
notify: h_shell
- name: a shell
yum:
name: notapkg
state: latest
handlers:
- name: h_shell
service:
name: mariadb
state: restarted
$ ansible-playbookv6-4_server2.yml
PLAY ******************************************************************************************************************************************************************
TASK *****************************************************************************************************************************************************************
ok:
TASK *******************************************************************************************************************************************************************************
ok:
TASK *************************************************************************************************************************************************************************
fatal: : FAILED! => {"changed": false, "failures": ["No package notapkg available."], "msg": "Failed to install some of the specified packages", "rc": 1, "results": []}
PLAY RECAP *****************************************************************************************************************************************************************************
server2.example.com : ok=2 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
页:
[1]