Fix: deploy no servidor onion-worker

TLDR: Corrige o deploy renomeando o servidor, padronizando as confs do supervisor e derivando conf/PID dinamicamente do hostname.

Contexto

O servidor onion-tasks executava o worker Celery, mas o hostname não batia no case do deploy-backend.sh, impedindo que o supervisor fosse configurado e o PID encontrado. Além disso, os nomes das confs (celery-*) e os program names do supervisor não seguiam o padrão dos hostnames (onion-worker-*), exigindo um case hardcodado para cada servidor.

A solução foi:

  1. Renomear o servidor para onion-worker via hostnamectl
  2. Renomear as confs do supervisor de celery-* para worker-*, alinhando com o hostname
  3. Derivar SUPERVISOR_CONF, SUPERVISOR_PROGRAM e PID dinamicamente do hostname no script de deploy, eliminando o case
  4. Padronizar --pidfile e logs nas confs com %(program_name)s
  5. Adicionar erros em vermelho em todos os pontos de falha

Objetivos

  • Deploy funciona em qualquer servidor que siga o padrão onion-<type>[-N]
  • Nenhum hardcode de hostname, conf ou PID no script de deploy
  • Falhas visíveis com error: em vermelho e exit code não-zero

Fora de escopo

— (não registrado na spec original)

Mudanças

scripts/deploy-backend.sh

  • Remove o case por hostname
  • Deriva TYPE do hostname via sed -E 's/^onion-(.+)-[0-9]+$/\1/;s/^onion-//'
  • Monta SUPERVISOR_CONF=$TYPE-production.conf, SUPERVISOR_PROGRAM=onion-$TYPE-production, PID=$DIR_BASE/run/$SUPERVISOR_PROGRAM.pid
  • Valida que a conf existe antes de aplicar
  • Todos os pontos de falha imprimem error: <mensagem> em vermelho e fazem exit 1

supervisor/celery-*.conf → supervisor/worker-*.conf

Arquivo antigo Arquivo novo
celery-production.conf worker-production.conf
celery-beat-production.conf worker-beat-production.conf
celery-habits-production.conf worker-habits-production.conf
celery-staging.conf worker-staging.conf
celery-beat-staging.conf worker-beat-staging.conf
  • [program:onion-celery-*] → [program:onion-worker-*]
  • --pidfile e *_logfile padronizados com %(program_name)s

Ação manual nos servidores (antes do merge)

Em cada servidor worker, parar o processo antigo:

bash sudo supervisorctl stop onion-celery-production # ajustar nome conforme servidor sudo rm -f /etc/supervisor/conf.d/celery-production.conf sudo supervisorctl reread && sudo supervisorctl update

Como verificar

  1. Rodar sudo -u ubuntu /home/ubuntu/deploy.sh no servidor onion-worker
  2. Confirmar que conclui com Process backend reloaded
  3. Confirmar que sudo supervisorctl status mostra o processo RUNNING com o nome onion-worker-production

Documentação

Nenhuma mudança de documentação necessária.