Чтобы проверки появлялись в Uchiwa при добавлении нового sensu-клиента, sensu-server
и sensu-api
необходимо перезапустить. На данный момент есть 5 клиентов и один сервер. Каждый раз, когда новый сенсу-клиент добавляется с использованием анзибля, чеки не появляются в Учиве. На данный момент мне нужно войти на сервер sensu и перезапустить службы. Как это автоматизировать с помощью 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"
который можно вызвать с помощью notify:
tasks:
- name: restart everything
command: echo "this task will restart the web services"
notify: "restart web services"
так что служба будет перезапущена, если произойдет изменение, например, в конфигурации, но как уведомить удаленную службу, например служба уведомлений на IP-B с IP-A?
(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
Что он делает, так это то, что задача обработчика будет выполняться на сервере (ах), которому вы делегировали задачу. а затем подключитесь к своей задаче, как вы сказали в вопросе.