Ich habe ein Playbook, das Tomcat installiert und dann einige Webanwendungen implementiert. Die Aufgabe (n) der Webanwendungsbereitstellung benachrichtigt einen Handler, um Tomcat neu zu starten. Aber der HF feuert nie. Ich verwende einen Handler, um den Tomcat-Dienst zu verwalten, weil ich aus den Dokumenten verstehe, dass Handler nur einmal feuern sollten, auch wenn sie mehrmals aufgerufen werden. Fehle ich etwas Offensichtliches?Warum schießen meine Ansible-Handler nicht?
Dies ist das Textbuch:
---
- 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
Dies ist eine der Rollen, die die Web-App entsendet:
---
- 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"
Dies ist der handler:
- 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"
Ich habe einen Workaround dafür. Ich definiere den Handler einfach im Playbook. Es gibt einige Posts über Handler, die in Dateien definiert sind, die nicht richtig funktionieren. – RhythmicDevil