Ansible ha difficoltà a riavviare Supervisor


8

Sto cercando di riavviare Supervisor tramite il mio Ansible Playbook ma sembra che stia incontrando un problema con il modulo supervisore per Ansible.

Nella mia configurazione del supervisore ho definito un programma:

[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 questo funziona benissimo. Tuttavia, quando provo a riavviare Supervisor tramite Ansible ottengo il seguente errore:

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

La configurazione dell'attività My Ansible è simile alla seguente:

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

Per il nameparametro ho provato program:process, program, program:e processma nessuno sembra funzionare. Sono attualmente su Ansible 1.5.4.


1
La prima cosa da fare è aggiornare Ansible. Non c'è praticamente alcun motivo per cui dovresti essere su una versione così vecchia.
Michael Hampton,

È la versione out of the box fornita con Ubuntu 14.04 LTS. Capisco che sia un po 'datato ma nulla nel manuale Ansible per quanto riguarda il modulo Supervisore indica che dovrei aggiornare (a parte il nome del gruppo che non mi interessa). Certo, una versione più recente potrebbe avere correzioni di bug, ma quello che sto provando sembra abbastanza rudimentale che non una versione più recente dovrebbe essere in grado di gestirlo.
Luca

Sono abbastanza sicuro che per questo sia necessario Ansible 1.6 o successivo, poiché è stato aggiunto il supporto di gruppo. Anche Red Hat sta monitorando l'ultima versione stabile (sono attualmente in 1.9.4), quindi non so quale sia l'accordo con Ubuntu qui. Ovviamente su Red Hat puoi semplicemente usare systemd e dimenticare tutte queste cose del supervisore.
Michael Hampton,

Nessun problema. Questa è la documentazione che sto per scaricare: docs.ansible.com/ansible/supervisorctl_module.html
Luca

Giusto, e questa è la stessa pagina che nota che ti serve 1.6!
Michael Hampton,

Risposte:


9

Il supervisorctlmodulo Ansible non supporta il reloadcomando ( vedere qui ), necessario per consentire al supervisore di raccogliere nuove voci di configurazione.

Puoi farlo da solo in questo modo:

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

La documentazione su ricaricare / rileggere / aggiornare / riavviare sembra mancare e questo post del blog non è aggiornato ; puoi sperimentare per assicurarti di fare reloadciò che ti aspetti.

Infine, non inserire le definizioni del programma in supervisord.conf . Invece, inseriscili come singoli file in /etc/supervisor/conf.d/*.conf. Ciò rende l'installazione e la manutenzione molto più semplici.


2
Grazie per quello Molto apprezzato, tuttavia, non fa differenza. L' supervisorctlattività non riesce ancora perché non è in grado di fare riferimento / trovare il file program:process. Questo sembra essere un problema in questo modulo Ansible (e sì, non inserisco le definizioni del mio programma all'interno di supervisord.confe sono caricate da conffile esterni ). Alla fine sono andato con un semplice comando Ansible, bypassando del tutto il modulo Supervisore: command: supervisorctl -c /etc/supervisor/supervisord.conf restarte questo funziona perfettamente.
Luca

funziona senza -c, @luke?
tedder42
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.