Manipuladores são listas de tarefas, não muito diferentes das tarefas regulares, que são referenciadas por um nome globalmente exclusivo e são notificadas pelos notificadores. Se nada notificar um manipulador, ele não será executado. Independentemente de quantas tarefas notificarem um manipulador, ele será executado apenas uma vez, depois que todas as tarefas forem concluídas em uma jogada específica. documento ansível
1) Os manipuladores que fazem a mesma coisa devem ter o mesmo nome.
restart nginx
SEMPRE reinicia o nginx, não handler1
ehandler2
2) Os manipuladores são executados no final de toda a "peça" de uma peça com escopo definido para suas seções.
3) Eu usaria as funções register
e when
para tarefas que devem ser reiniciadas; observe que este var deve levar consigo.
Código Fonte
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
Muitas maneiras de fazer a mesma tarefa. Os manipuladores foram projetados para impedir a reinicialização do mesmo processo várias vezes, como várias alterações em um servidor nginx que possui sites, certificados SSL e outras tarefas que precisam de reinicialização do serviço.