Ansible tem dificuldade em reiniciar o Supervisor

8

Estou tentando reiniciar o Supervisor através do meu Ansible Playbook, mas pareço estar tropeçando em um problema com o módulo de supervisor da Ansible.

Na minha configuração de supervisor, defini um programa:

[program:process]
process_name=%(program_name)s_%(process_num)02d
command=/home/box1/workers/bin/process
numprocs=64
directory=/home/box1/workers/bin
autostart=true
autorestart=true
startretries=5
stderr_logfile=/tmp/%(program_name)s-err.log
stdout_logfile=/tmp/%(program_name)s-out.log
user=root

E isso funciona bem. No entanto, quando tento reiniciar o Supervisor através do Ansible, recebo o seguinte erro:

failed: [box1] => {"failed": true}
msg: program:process: ERROR (no such process)
program:process: ERROR (no such process)

A minha configuração de tarefas Ansible é assim:

- name: Restart Supervisor
  sudo: yes
  supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf

Para o parâmetro name , tentei program:process , program , program: e process , mas nenhum parece funcionar. Eu estou atualmente no Ansible 1.5.4.

    
por Luke 14.03.2016 / 05:50

1 resposta

9

O módulo supervisorctl Ansible não suporta o comando reload ( veja aqui ), que é necessário para o supervisor pegar novas entradas de configuração.

Você pode fazer isso sozinho assim:

- command: supervisorctl reread
  sudo: yes
- supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf
  sudo: yes

A documentação de reload / reread / update / restart parece estar faltando, e esta postagem do blog está fora de data ; você pode experimentar para ter certeza de que reload faz o que você espera.

Finalmente, não coloque as definições do seu programa em supervisord.conf . Em vez disso, coloque-os como arquivos individuais em /etc/supervisor/conf.d/*.conf. Isso facilita muito a instalação e manutenção.

    
por 14.03.2016 / 20:44