botang 发表于 2020-8-12 22:00:22

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]
查看完整版本: ANSIBLE12(force_handlers)