为了在添加新的 sensu-client 时让检查出现在 Uchiwa 中,需要重新启动sensu-server
和sensu-api
。目前有 5 个客户端和一个服务器。每次使用 ansible 添加新的 sensu-client 时,检查都不会出现在 Uchiwa 中。目前,我需要登录 sensu-server 并重新启动服务。如何使用 ansible 自动执行此操作?
根据本文档有处理程序:
handlers:
- name: restart memcached
service: name=memcached state=restarted
listen: "restart web services"
- name: restart apache
service: name=apache state=restarted
listen: "restart web services"
可以使用通知来调用:
tasks:
- name: restart everything
command: echo "this task will restart the web services"
notify: "restart web services"
这样,如果配置发生变化,服务将重新启动,但是如何通知远程服务,例如从 IP-A 通知 IP-B 上的服务?
答案1
(listen
这是 2.2 版的新功能,截至撰写本文时尚未发布,因此我不会使用它)
通知就像常规任务(或类似任务),只是它是由事件触发的,所以基本上你可以做这样的事情,这有点丑陋(并且不安全,因为机器应该具有对远程服务器的 ssh 访问权限)但应该可以工作。
handlers:
- name: restart my remote service
command: ssh user@myserver -- service restart myservice
但 Ansible 有一个更优雅的方式来处理这个问题delegate_to
handlers:
- name: restart my remote service
service: name=myserver state=restarted
delegate_to: myserver
它的作用是,处理程序任务将在您已委派任务的服务器上执行。然后按照您在问题中所说的那样插入到您的任务中。