Я пытаюсь перезапустить Supervisor через свой Ansible Playbook, но, похоже, наткнулся на проблему с модулем супервизора для Ansible.
В моей конфигурации Supervisor я определил программу:
[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
И это прекрасно работает. Однако, когда я пытаюсь перезапустить Supervisor через Ansible, я получаю следующую ошибку:
failed: [box1] => {"failed": true}
msg: program:process: ERROR (no such process)
program:process: ERROR (no such process)
Моя конфигурация задачи Ansible выглядит так:
- name: Restart Supervisor
sudo: yes
supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf
Для name
параметр я пробовал program:process
, program
, program:
и process
но, похоже, никто не работает. Сейчас я использую Ansible 1.5.4.
В supervisorctl
Модуль Ansible не поддерживает reload
команда (посмотреть здесь), который необходим супервизору для получения новых записей конфигурации.
Сделать самому можно так:
- command: supervisorctl reread
sudo: yes
- supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf
sudo: yes
Документация по перезагрузке / повторному чтению / обновлению / перезапуску, похоже, отсутствует, и это сообщение в блоге устарело; вы можете поэкспериментировать, чтобы убедиться reload
делает то, что вы ожидаете.
В заключение, не помещайте определения вашей программы в supervisord.conf. Вместо этого поместите их как отдельные файлы в /etc/supervisor/conf.d/*.conf. Это значительно упрощает установку и обслуживание.