Les gestionnaires sont des listes de tâches, qui ne sont pas vraiment différentes des tâches ordinaires. tâches ordinaires, qui sont référencées par un nom unique au niveau mondial, et sont notifiées par des notificateurs. Si rien ne notifie un gestionnaire, il ne sera pas exécuté. Quel que soit le nombre de tâches qui notifient un gestionnaire, celui-ci ne sera exécuté qu'une seule fois, après que toutes les tâches se soient terminées dans un jeu particulier. doc ansible
1) Les gestionnaires qui font la même chose doivent avoir le même nom.
restart nginx
redémarre TOUJOURS nginx, et non pas handler1
y handler2
2) Les manipulateurs sont exécutés à la FIN de l'ensemble du "jeu", un jeu adapté à vos sections.
3) J'utiliserais le register
y when
pour les tâches qui doivent être redémarrées, notez que cette var doit être emportée avec vous.
Code Source
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
Il existe de nombreuses façons d'effectuer la même tâche. Les gestionnaires ont été conçus pour éviter de redémarrer le même processus plusieurs fois, comme dans le cas de modifications multiples d'un serveur nginx qui a des sites web, des certs ssl et d'autres tâches qui nécessitent des redémarrages de service.