mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
proposal: re-run handlers
This commit is contained in:
parent
d60f0c94f8
commit
d361f3b44e
1 changed files with 77 additions and 0 deletions
77
docs/proposals/re-run-handlers.md
Normal file
77
docs/proposals/re-run-handlers.md
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
# Proposal: Re-run handlers cli option
|
||||||
|
|
||||||
|
*Author*: René Moser <@resmo>
|
||||||
|
|
||||||
|
*Date*: 07/03/2016
|
||||||
|
|
||||||
|
- Status: New
|
||||||
|
|
||||||
|
## Motivation
|
||||||
|
|
||||||
|
The most annoying thing users face using ansible in production is running handlers manually after a task failed after a notified handler.
|
||||||
|
|
||||||
|
### Problems
|
||||||
|
|
||||||
|
Handler notifications get lost after a task failed and there is no help from ansible to catch up the notified handlers in a next ansible playbook run.
|
||||||
|
|
||||||
|
~~~yaml
|
||||||
|
- hosts: localhost
|
||||||
|
gather_facts: no
|
||||||
|
tasks:
|
||||||
|
- name: simple task
|
||||||
|
shell: echo foo
|
||||||
|
notify: get msg out
|
||||||
|
|
||||||
|
- name: this tasks fails
|
||||||
|
fail: msg="something went wrong"
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- name: get msg out
|
||||||
|
shell: echo handler run
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
~~~
|
||||||
|
$ ansible-playbook test.yml
|
||||||
|
|
||||||
|
PLAY ***************************************************************************
|
||||||
|
|
||||||
|
TASK [simple task] *************************************************************
|
||||||
|
changed: [localhost]
|
||||||
|
|
||||||
|
TASK [this tasks fails] ********************************************************
|
||||||
|
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "something went wrong"}
|
||||||
|
|
||||||
|
NO MORE HOSTS LEFT *************************************************************
|
||||||
|
|
||||||
|
RUNNING HANDLER [get msg out] **************************************************
|
||||||
|
to retry, use: --limit @test.retry
|
||||||
|
|
||||||
|
PLAY RECAP *********************************************************************
|
||||||
|
localhost : ok=1 changed=1 unreachable=0 failed=1
|
||||||
|
~~~
|
||||||
|
|
||||||
|
## Solution proposal
|
||||||
|
|
||||||
|
Similar to retry, ansible should provide a way to manully invoke a list of handlers additionaly to the notified handlers in the plays:
|
||||||
|
|
||||||
|
~~~
|
||||||
|
$ ansible-playbook test.yml --notify-handlers <handler>,<handler>,<handler>
|
||||||
|
$ ansible-playbook test.yml --notify-handlers @test.handlers
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
~~~
|
||||||
|
$ ansible-playbook test.yml --notify-handlers "get msg out"
|
||||||
|
~~~
|
||||||
|
|
||||||
|
The stdout of a failed play should provide an example how to run notified handlers in the next run:
|
||||||
|
|
||||||
|
~~~
|
||||||
|
...
|
||||||
|
RUNNING HANDLER [get msg out] **************************************************
|
||||||
|
to retry, use: --limit @test.retry --notify-handlers @test.handlers
|
||||||
|
~~~
|
||||||
|
|
Loading…
Reference in a new issue