2016-02-01 18 views
9

Ho un compito:Ordine di notificare gestori

- name: uploads docker configuration file 
    template: 
    src: 'docker.systemd.j2' 
    dest: '/etc/systemd/system/docker.service' 
    notify: 
    - daemon reload 
    - restart docker 

in Ansible playbook di documentation, c'è una frase:

notifica gestori vengono sempre eseguiti in ordine scritto.

Quindi, si prevede, che daemon ricarica verrà eseguito prima riavvio finestra mobile, ma in forma di ceppi, ho:

 
TASK [swarm/docker : uploads docker configuration file] ************************ 
… 
NOTIFIED HANDLER daemon reload 
NOTIFIED HANDLER restart docker 
… 
RUNNING HANDLER [swarm/docker : restart docker] ******************************** 
… 
RUNNING HANDLER [swarm/docker : daemon reload] ********************************* 
… 

non ci sono più "HANDLER notificato" nei registri . Qualcuno può spiegare, cosa sto facendo di sbagliato? :(

+1

Sembra che la documentazione è stata aggiornata: "Comunica gestori vengono sempre eseguite nello stesso ordine in cui sono definiti, non nell'ordine elencato nell'istruzione di notifica. " – JCotton

+0

Grazie JCotton. Questo è esattamente qual è il problema, un altro brutto guaio. – Guagua

risposta

26

penso che si può avere “finestra mobile restart” elencati prima “daemon ricarica” nei vostri gestori di file.

Quella parte della documentazione ansible è un po 'fuorviante. Ciò significa che i gestori vengono eseguiti nella nell'ordine in cui sono scritti nei gestori di file, non nell'ordine in cui vengono notificati.

Questo è poco più chiaro nel the glossary

+14

È dannatamente inaspettato – blurrcat

0

ho appena capito che posso avere i gestori chiamano altri gestori.

compito

Esempio:

- name: Configure Apache 
    copy: src=apache-azkaban.conf dest=/etc/apache2/sites-enabled/azkaban.conf 
    notify: 
    - a2enmod proxy 
    - a2enmod proxy_http 

Nel mio handlers/main.yml:

- name: a2enmod proxy 
    shell: a2enmod proxy 
    notify: 
    - restart apache2 

- name: a2enmod proxy_http 
    shell: a2enmod proxy_http 
    notify: 
    - restart apache2 

- name: restart apache2 
    service: name=apache2 state=restarted