Обробники - це списки завдань, які насправді не відрізняються від звичайних завдань, на які посилається глобальне унікальне ім’я та повідомляються повідомленнями. Якщо нічого не сповістить обробник, він не запуститься. Незалежно від того, скільки завдань сповістить обробник, він запуститься лише один раз, після того, як всі завдання будуть виконані в певній програмі. відповідальний док
1) Обробники, які роблять те саме, повинні бути названі однаковими.
restart nginx
ЗАВЖДИ перезапускає nginx, не handler1
іhandler2
2) Обробники запускаються в КІНЦІ всієї п’єси "Відтворити", яка охоплюється вашими секціями.
3) Я використовував би функції register
та when
функції для завдань, які слід перезапустити, зауважте, що цей вар повинен мати із собою.
Джерело коду
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
Дуже багато способів виконати те саме завдання. Обробники були розроблені для запобігання повторного запуску одного і того ж процесу кілька разів, наприклад, декількох змін сервера nginx, який має веб-сайти, ssl certs та інші завдання, які потребують перезавантаження сервісу.