为了在添加新的 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 上的服务?
(
listen
是一个 2.2 的新功能,在撰写本文时尚未发布,所以我不会使用它)通知就像一个常规任务(或其他),除了它是由一个事件触发的,所以基本上你可以做这样的事情,这有点丑陋(而且不安全,因为机器应该可以通过 ssh 访问远程服务器)但是应该管用。
但是 Ansible 有一种更优雅的方式来处理这个问题
delegate_to
它的作用是,处理程序任务将在您委派任务的服务器上执行。然后按照您在问题中所说的那样插入您的任务。