Tornar o Amazon MQ o messagebroker canônico

TLDR: Destruir o droplet legado do RabbitMQ, promover o stack do Amazon MQ para o caminho canônico src/shared/messagebroker/terraform (chave de state stacks/shared/messagebroker), apagar todo o código legado e derrubar os jobs de CI correspondentes — para que “messagebroker” signifique Amazon MQ em todo lugar.

Contexto

O messagebroker compartilhado já foi migrado para o Amazon MQ (broker RUNNING, público, com messagebroker.ibft.app apontando para ele). Mas o repo ainda carregava o stack legado do droplet em src/shared/messagebroker/terraform/, enquanto o stack do Amazon MQ vivia em src/shared/messagebroker/aws/terraform/ com a chave de state stacks/shared/messagebroker-aws.

Dois problemas concretos:

  • O job de CI do stack legado travava. Ele roda sob ward exec, mas o stack usava variável em MAIÚSCULA que o ward não fornece, então o terraform plan bloqueava esperando entrada interativa. Qualquer PR que tocasse aquele path travava a execução.
  • Nomenclatura invertida. O caminho canônico carregava o sufixo -aws enquanto a sobra legada ficava com o nome limpo — o oposto da regra “sempre messagebroker”.

Objetivos

  • Droplet, firewall e DNS interno destruídos; código removido do repo.
  • Stack do Amazon MQ promovido a src/shared/messagebroker/terraform, state migrado para a chave stacks/shared/messagebroker.
  • Nenhum código do provedor antigo restando (droplet, firewall, registro DNS interno, variável em MAIÚSCULA, scripts baseados em wehive).
  • CI com um único par plan/apply de messagebroker, baseado em ward — o job que travava removido.

Fora de escopo

  • O cutover do consumidor. Ele é especificado e implementado separadamente, no repo marketing.

⚠️ Impacto aceito: destruir o droplet derruba o RabbitMQ para o qual o n8n do marketing ainda apontava (o cutover não havia acontecido). O usuário aceitou explicitamente a janela de interrupção.

Mudanças

Destruir os recursos legados

doctl compute droplet delete shared-messagebroker e o firewall correspondente. O DNS público já havia sido movido; o registro interno (internal.messagebroker) também é removido.

Promover o stack do Amazon MQ

  • src/shared/messagebroker/aws/terraform/ → src/shared/messagebroker/terraform/, substituindo o stack legado.
  • Chave em backend.tf: stacks/shared/messagebroker-aws → stacks/shared/messagebroker, com o objeto de state copiado no bucket (sobrescrevendo o state legado, agora sem função).

Remover o código legado

Apagar main.tf/outputs.tf/data.tf/versions.tf/variables.tf do droplet e o diretório templates/ (Caddy e init do rabbitmq), mais os scripts bin/stacks/shared/messagebroker/*.sh baseados em wehive.

CI

Em infra.yml e infra-pr.yml: derrubar os jobs plan/apply e o filtro de path do stack legado; renomear os jobs, filtro e outputs de messagebroker-aws para simplesmente messagebroker, apontando para src/shared/messagebroker/terraform.

Como verificar

  • doctl compute droplet list — nenhum shared-messagebroker.
  • src/shared/messagebroker/terraform é o stack do Amazon MQ; o subdiretório aws/ não existe mais.
  • Uma mudança em src/shared/messagebroker/** dispara um job shared messagebroker / plan (ward, Amazon MQ) que completa — sem travar.
  • terraform state list no stack promovido mostra o aws_mq_broker, o security group e o DNS na chave nova.
  • messagebroker.ibft.app continua resolvendo para o broker.

Documentação

  • CLAUDE.md — messagebroker é Amazon MQ em src/shared/messagebroker/terraform.
  • Restrições do Amazon MQ para RabbitMQ em cluster — nota de que o droplet foi descomissionado.
  • Follow-up em spec separada: CI genérico de terraform (matrix ou reusable) para colapsar os ~7 pares de job plan/apply duplicados.