J'essaie de redémarrer Supervisor via mon Playbook Ansible, mais je semble tomber dans un problème avec le module Superviseur pour Ansible.
Dans ma configuration de superviseur, j'ai défini un programme:
[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
Et cela fonctionne bien. Cependant, lorsque j'essaie de redémarrer Supervisor via Ansible, j'obtiens l'erreur suivante:
failed: [box1] => {"failed": true}
msg: program:process: ERROR (no such process)
program:process: ERROR (no such process)
Ma configuration de tâche Ansible ressemble à ceci:
- name: Restart Supervisor
sudo: yes
supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf
Pour le name
paramètre que je l' ai essayé program:process
, program
, program:
et , process
mais aucun ne semble travailler. Je suis actuellement sur Ansible 1.5.4.
Réponses:
Le
supervisorctl
module Ansible ne prend pas en charge lareload
commande ( voir ici ), qui est nécessaire pour que le superviseur récupère de nouvelles entrées de configuration.Vous pouvez le faire vous-même comme ceci:
La documentation sur recharger / relire / mettre à jour / redémarrer semble être manquante et ce billet de blog est obsolète ; vous pouvez expérimenter pour vous assurer
reload
que ce que vous attendez.Enfin, ne placez pas vos définitions de programme dans supervisord.conf . Au lieu de cela, placez-les en tant que fichiers individuels dans /etc/supervisor/conf.d/*.conf. Cela rend l'installation et la maintenance beaucoup plus faciles.
la source
supervisorctl
tâche échoue toujours car elle ne peut pas référencer / trouver le fichierprogram:process
. Cela semble être un problème dans ce module Ansible (et oui, je ne place pas mes définitions de programme à l'intérieur desupervisord.conf
et elles sont chargées à partir deconf
fichiers externes ). À la fin, je suis allé avec une simple commande Ansible, en contournant complètement le module Superviseur:command: supervisorctl -c /etc/supervisor/supervisord.conf restart
et cela fonctionne parfaitement.-c
@luke?