Handler sind Listen von Aufgaben, die sich nicht wirklich von normalen Aufgaben unterscheiden, auf die durch einen global eindeutigen Namen verwiesen wird und die von Benachrichtigern benachrichtigt werden. Wenn ein Handler nicht benachrichtigt wird, wird er nicht ausgeführt. Unabhängig davon, wie viele Tasks einen Handler benachrichtigen, wird er nur einmal ausgeführt, nachdem alle Tasks in einem bestimmten Spiel abgeschlossen wurden. Ansible doc
1) Handler, die dasselbe tun, sollten den gleichen Namen haben.
restart nginx
Startet Nginx IMMER neu, nicht handler1
undhandler2
2) Handler werden am ENDE des gesamten "Spiels" ausgeführt, ein Spiel, das sich auf Ihre Abschnitte bezieht.
3) Ich würde die register
und when
Funktionen für Aufgaben verwenden, die neu gestartet werden sollten, beachten Sie, dass diese var mit sich führen sollte.
Code-Quelle
PLAY [localhost] ***************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "Play 1"
}
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role2 : Run if change in task c of role 1] *******************************
changed: [localhost]
TASK [role2 : Always true in role2] ********************************************
changed: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "This is a task in a play"
}
RUNNING HANDLER [role1 : handler] **********************************************
ok: [localhost] => {
"msg": "This is a handler in role1"
}
PLAY [localhost] ***************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "Play 2"
}
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role2 : Run if change in task c of role 1] *******************************
changed: [localhost]
TASK [role2 : Always true in role2] ********************************************
changed: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "This is a task in a play"
}
RUNNING HANDLER [role1 : handler] **********************************************
ok: [localhost] => {
"msg": "This is a handler in role1"
}
PLAY RECAP *********************************************************************
localhost : ok=20 changed=14 unreachable=0 failed=0
Viele Möglichkeiten, die gleiche Aufgabe zu erledigen. Handler sollten verhindern, dass derselbe Prozess mehrmals neu gestartet wird, z. B. mehrfache Änderungen an einem Nginx-Server mit Websites, SSL-Zertifikaten und anderen Aufgaben, die einen Neustart des Dienstes erfordern.