我有一个任务:
- name: uploads docker configuration file
template:
src: 'docker.systemd.j2'
dest: '/etc/systemd/system/docker.service'
notify:
- daemon reload
- restart docker
在Ansible playbook' documentation中,有一句话:
通知处理程序始终按写入的顺序运行。
因此,预计守护程序重新加载将在重新启动docker 之前运行,但在日志中,我有:
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] ********************************* …
没有更多" NOTIFIED HANDLER"在日志中。谁能解释一下,我做错了什么? :(
答案 0 :(得分:38)
我认为您可能在处理程序文件中的“守护程序重新加载”之前列出了“重新启动docker”。
ansible文档的那部分有点误导。这意味着处理程序按照处理程序文件中的顺序执行,而不是通知它们的顺序。
中的情况稍微清楚一点答案 1 :(得分:2)
我发现我可以让处理程序调用其他处理程序。
示例任务:
- name: Configure Apache
copy: src=apache-azkaban.conf dest=/etc/apache2/sites-enabled/azkaban.conf
notify:
- a2enmod proxy
- a2enmod proxy_http
在我的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