我有一个游戏手册,安装tomcat,然后部署一些web应用程序。web应用程序部署任务通知处理程序重新启动tomcat。但处理人员从不开火。我使用一个处理程序来管理tomcat服务,因为我从文档中了解到,即使多次调用,处理程序也只能触发一次。我漏掉了什么明显的东西吗?
,这是剧本:
---
- hosts: all
become: true
become_user: root
roles:
- role: common
- role: nginx
- role: tomcat
- role: launchpad
- role: manager
- role: reporting
handlers:
- include: /tomcat/handlers/etitomcat_service_ctrl.yml这是部署web应用程序的角色之一:
---
- name: Remove the current installation of LaunchPad
file: path={{etitomcat_path}}/webapps/{{launchpad_module}} state=absent
- name: Remove the current war file for {{launchpad_module}}
file: path={{etitomcat_path}}/webapps/{{launchpad_module}}.war state=absent
- name: Download the latest snapshot of LaunchPad and deploy it to {{etitomcat_path}}
get_url: url={{launchpad_source_url}} dest={{etitomcat_path}}/webapps/{{launchpad_module}}.war mode=0744 owner={{etitomcat_user}} group={{etitomcat_group}} force=yes
notify: "restart_eti_tomcat",这是处理程序:
- name: "Restart ETI Tomcat"
service: name=etitomcat state=restarted
become: true
become_user: root
listen: "restart_eti_tomcat"
- name: "Start ETI Tomcat"
service: name=etitomcat state=started
become: true
become_user: root
listen: "start_eti_tomcat"
- name: "Stop ETI Tomcat"
service: name=etitomcat state=stopped
become: true
become_user: root
listen: "stop_eti_tomcat" 发布于 2016-08-08 22:02:24
发布于 2017-01-27 06:49:06
这可能不是重点,但我会添加这一点,因为问题标题是相当广泛的,这是我发现的问题时,谷歌和下面是解决我的特定问题。
当在相应的任务中注册了更改时,一定要考虑到处理程序只会触发。即使您以最高的详细级别运行游戏,也会有,没有这样的条目,这说明了这一点。
RUNNING HANDLER [base : somehandler ] ***********************
Unchanged: Skipping当它们在更改后被触发时,将是在所有的任务都已经执行之后。
这确实让我感到困惑,因为任务通知了您,不管它们是否真的做了一些事情,而处理程序则保持沉默。
例如,如果您有一个任务A,您已经运行了几次,直到它按照您的预期工作为止。
然后,连接处理程序B以重新启动服务之后,除非您擦除任务A正在执行或更改的操作,否则不会发生任何事情。
只要任务A注册没有更改,它就不会触发处理程序B。
无论如何,这就是ansible 2.2.1的行为。
发布于 2016-08-09 06:49:21
您可以添加任务和post_tasks部分,而不是handlers部分,希望它对您有用:
---
- hosts: all
become: true
become_user: root
tasks:
- role: common
- role: nginx
- role: tomcat
- role: launchpad
- role: manager
- role: reporting
post_tasks:
- include: /tomcat/handlers/etitomcat_service_ctrl.ymlhttps://stackoverflow.com/questions/38836801
复制相似问题