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 statestacks/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 oterraform planbloqueava esperando entrada interativa. Qualquer PR que tocasse aquele path travava a execução. - Nomenclatura invertida. O caminho canônico carregava o sufixo
-awsenquanto 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 chavestacks/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— nenhumshared-messagebroker.src/shared/messagebroker/terraformé o stack do Amazon MQ; o subdiretórioaws/não existe mais.- Uma mudança em
src/shared/messagebroker/**dispara um jobshared messagebroker / plan(ward, Amazon MQ) que completa — sem travar. terraform state listno stack promovido mostra oaws_mq_broker, o security group e o DNS na chave nova.messagebroker.ibft.appcontinua resolvendo para o broker.
Documentação
CLAUDE.md— messagebroker é Amazon MQ emsrc/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.