Como notificar um serviço remoto usando o Ansible?

4

Para permitir que as verificações apareçam no Uchiwa quando um novo cliente-cliente for adicionado, os sensu-server e sensu-api precisam ser reiniciados. No momento, existem 5 clientes e um servidor. Toda vez que um novo sensu-client é adicionado usando ansible, os checks não aparecem em Uchiwa. No momento, preciso fazer o login no sensu-server e reiniciar os serviços. Como automatizar isso usando ansible?

De acordo com esta documentação , há manipuladores:

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" 

que poderia ser chamado usando notificar:

tasks:
    - name: restart everything
      command: echo "this task will restart the web services"
      notify: "restart web services"

para que o serviço seja reiniciado se ocorrer uma alteração, por exemplo, na configuração, mas como notificar um serviço remoto, por exemplo, notificar serviço no IP-B da IP-A?

    
por 030 21.08.2016 / 13:30

1 resposta

3

( listen é um novo recurso 2.2 que não foi lançado até o momento, por isso não vou usá-lo)

Uma notificação é como uma tarefa regular (ou algo assim), exceto que é acionada por um evento, então basicamente você pode fazer algo assim, isso é meio feio (e inseguro, pois a máquina deve ter acesso ssh ao remoto servidores), mas deve funcionar.

handlers:
    - name: restart my remote service
      command: ssh user@myserver -- service restart myservice

Mas a Ansible tem uma maneira mais elegante de lidar com isso com delegate_to

handlers:
    - name: restart my remote service
      service: name=myserver state=restarted
      delegate_to: myserver

O que ele faz, a tarefa do manipulador será executada no (s) servidor (es) com que você delegou a tarefa. e depois plug-in para a sua tarefa como você disse na pergunta.

    
por 21.08.2016 / 13:43