Qual é a maneira correta de reiniciar um daemon com o Ansible no OSX?

3

Eu criei uma função Ansible simples com o propósito de configurar o dnsmasq em destinos do OSX (o dnsmasq é instalado a partir do homebrew).

Eu quero criar um manipulador que reinicie o daemon quando o arquivo de configuração for alterado (o Ansible, da versão 1.9.3, não implementa o módulo de serviço do OSX).

Eu tenho uma tarefa:

- name: Create dnsmasq config file in /usr/local/etc/ from template
  template: src=dnsmasq.conf.j2 dest=/usr/local/etc/dnsmasq.conf
  notify:
  - restart dnsmasq

Em /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist , há uma chave <key>KeepAlive</key> que inicia o daemon automaticamente quando não está em execução, portanto, o manipulador a seguir faz seu trabalho. Posso sempre confiar nisso?

- name: restart dnsmasq
  sudo: yes
  command: launchctl stop homebrew.mxcl.dnsmasq

Não existem cenários ou problemas de tempo que resultariam na parada permanente do daemon? Qual seria o modo adequado para que esse manipulador fosse escrito?

    
por techraf 05.09.2015 / 09:48

1 resposta

3

De launchctl(1) :

 stop label
          Stop the specified job by label. If a job is on-demand, launchd
          may immediately restart the job if launchd finds any criteria
          that is satisfied.

Então, eu diria que o KeepAlive faria com que o daemon voltasse, embora esse subcomando esteja no bloco LEGACY SUBCOMANDS , então pode ser removido pela Apple em algum momento o futuro? kickstart -k parece que vai iniciar ou reiniciar, e não está no bloco legado ...

    
por 05.09.2015 / 16:59