Ich versuche, Supervisor über mein Ansible Playbook neu zu starten, aber ich stoße anscheinend auf ein Problem mit dem Supervisor-Modul für Ansible.
In meiner Supervisor-Konfiguration habe ich ein Programm definiert:
[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
Und das funktioniert gut. Wenn ich jedoch versuche, Supervisor über Ansible neu zu starten, wird die folgende Fehlermeldung angezeigt:
failed: [box1] => {"failed": true}
msg: program:process: ERROR (no such process)
program:process: ERROR (no such process)
Die Konfiguration meiner Ansible-Aufgabe sieht folgendermaßen aus:
- name: Restart Supervisor
sudo: yes
supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf
Für den name
Parameter Ich habe versucht program:process
, program
, program:
und process
doch keiner scheint zu arbeiten. Ich bin derzeit auf Ansible 1.5.4.
ansible
supervisord
Luke
quelle
quelle
Antworten:
Das
supervisorctl
Ansible-Modul unterstützt denreload
Befehl ( siehe hier ) nicht, den der Supervisor benötigt, um neue Konfigurationseinträge aufzunehmen.Sie können es selbst so machen:
Die Dokumentation zum Neuladen / erneuten Lesen / Aktualisieren / Neustarten scheint zu fehlen, und dieser Blog-Beitrag ist veraltet . Sie können experimentieren, um sicherzustellen, dass
reload
Sie das tun, was Sie erwarten.Schließlich sollten Sie Ihre Programmdefinitionen nicht in die Datei Supervisord.conf einfügen . Fügen Sie sie stattdessen als einzelne Dateien in /etc/supervisor/conf.d/*.conf ein. Das erleichtert die Installation und Wartung erheblich.
quelle
supervisorctl
Aufgabe schlägt immer noch fehl, da sie die nicht referenzieren / finden kannprogram:process
. Dies scheint ein Problem in diesem Ansible-Modul zu sein (und ja, ich platziere meine Programmdefinitionen nicht imsupervisord.conf
und sie werden aus externenconf
Dateien geladen ). Am Ende ging ich mit einem einfachen Ansible-Befehl vor, der das Supervisor-Modul insgesamt umging:command: supervisorctl -c /etc/supervisor/supervisord.conf restart
und das funktioniert perfekt.-c
, @luke?