Los controladores son listas de tareas, no muy diferentes de las tareas normales, a las que se hace referencia con un nombre único global y que los notificadores notifican. Si nada notifica a un controlador, no se ejecutará. Independientemente de cuántas tareas notifiquen a un controlador, se ejecutará solo una vez, después de que todas las tareas se completen en una jugada en particular. doc. ansible
1) Los controladores que hacen lo mismo deben llamarse iguales.
restart nginx
SIEMPRE reinicia nginx, no handler1
yhandler2
2) Los controladores se ejecutan al FINAL de toda la "Obra", una jugada que se enfoca en sus secciones.
3) Usaría las funciones register
y when
para las tareas que deberían reiniciarse, tenga en cuenta que esta var debería llevarla con usted.
Código fuente
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
Muchas formas de hacer la misma tarea. Los controladores se diseñaron para evitar reiniciar el mismo proceso varias veces, como cambios múltiples en un servidor nginx que tiene sitios web, certificados SSL y otras tareas que necesitan reiniciar el servicio.