promovaweb-devops-review-metabase-stack

Installation
SKILL.md

Review Metabase Stack

Executa uma auditoria completa do arquivo metabase.yaml e reporta conformidade, problemas e sugestões.

Instruções de Execução

Quando esta skill for invocada, siga exatamente este roteiro:

Passo 1 — Ler os arquivos

Leia o arquivo metabase.yaml completo. Leia também postgres.yaml para verificar a consistência das credenciais de banco.

Passo 2 — Executar todos os checks abaixo

Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).

Passo 3 — Gravar o resultado

Grave o relatório completo em um arquivo chamado metabase.audit.md.


Checks de Verificação

1. Variáveis de Ambiente Obrigatórias

Verifique se todas as variáveis abaixo estão definidas no anchor x-metabase-db-env:

Banco de dados PostgreSQL (x-metabase-db-env)

  • MB_DB_TYPE — deve ser postgres
  • MB_DB_DBNAME — deve ser definido (padrão: metabase)
  • MB_DB_PORT — deve ser 5432
  • MB_DB_USER — deve ser definido (padrão: postgres)
  • MB_DB_PASS — deve existir e não deve ser o placeholder SENHA, compare com a senha definida em postgres.yaml
  • MB_DB_HOST — deve ser definido (padrão: postgres)

Variáveis diretas no serviço metabase:

  • MB_SITE_URL — deve começar com https:// e ser um domínio válido (não localhost, não bi.agenciasynca.com.br se placeholder)
  • O domínio de MB_SITE_URL deve corresponder à regra Traefik configurada

2. Serviços Obrigatórios

Verifique se o serviço está presente:

Serviço Obrigatório
metabase Sim

3. Replicas do Serviço

Verifique a quantidade de réplicas:

Serviço Réplicas Esperadas Observação
metabase 1 Metabase é stateful, múltiplas réplicas requerem configuração adicional

Alertar se houver mais de 1 réplica sem configuração de sessão compartilhada.


4. Rotas Traefik

Para o serviço metabase, verifique:

Âncora de endereço (x-metabase-app-url):

  • A âncora x-metabase-app-url deve existir e conter um domínio válido (não placeholder como bi.agenciasynca.com.br)
  • O domínio na âncora deve ser idêntico ao domínio dentro de Host(...) na label traefik.http.routers.metabase.rule
  • Se não forem iguais, reportar como ❌ Erro: inconsistência entre x-metabase-app-url e a regra Traefik
  • O domínio na âncora deve coincidir também com o domínio em MB_SITE_URL (sem o https://)

Labels obrigatórias:

  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.metabase.rule — deve conter Host(...) com domínio válido
  • traefik.http.routers.metabase.entrypoints=websecure
  • traefik.http.routers.metabase.tls.certresolver=letsencryptresolver
  • traefik.http.routers.metabase.service=metabase
  • traefik.http.services.metabase.loadbalancer.server.port=3000

Regras:

  • O domínio na regra Traefik deve corresponder ao x-metabase-app-url e ao MB_SITE_URL
  • Verificar se passHostHeader está configurado (recomendado)

5. Recursos do Container

Verifique os limites de recursos do serviço metabase:

Serviço CPU Mínimo Memória Mínima Memória Máxima
metabase "1" 1024M 2048M

Alertar se não tiver resources.limits definido. Metabase requer ao menos 1-2GB de memória para operar corretamente.


6. Configuração de Deploy

Para o serviço metabase, verifique:

  • mode: replicated — deve ser replicated
  • placement.constraints — deve incluir node.role == manager
  • Verificar se há update_config com order: start-first e failure_action: rollback (recomendado)

7. Redes e Imagens

Redes:

  • O serviço deve estar na rede network_swarm_public
  • A rede deve ser declarada como external: true na seção networks:
  • Metabase não declara volumes (usa banco externo) — verificar se isso é intencional

Imagens:

  • O serviço deve usar *metabase-image (anchor)
  • Verificar se a imagem usa tag específica de versão em vez de latest (recomendado em produção)
  • Alertar se estiver usando metabase/metabase:latest — versões do Metabase podem ter migrações de banco incompatíveis

8. Segurança

  • MB_DB_PASS não deve ser SENHA (placeholder)
  • MB_SITE_URL deve usar https:// (não http://)
  • Verificar se o banco de dados metabase foi criado no PostgreSQL antes do deploy
  • Verificar se há configuração de email para recuperação de senha (MB_EMAIL_* variáveis)

Formato do Relatório de Saída

Ao final, produza um relatório estruturado:

# Relatório de Auditoria — metabase.yaml
Data: <data atual>

## Resumo
- Total de checks: X
- ✅ OK: X
- ⚠️ Atenções: X
- ❌ Erros: X

## Resultados por Categoria

### 1. Variáveis de Ambiente
✅ MB_DB_TYPE: postgres
❌ MB_DB_PASS: usando placeholder SENHA — troque antes do deploy
✅ MB_SITE_URL: https://bi.agenciasynca.com.br
...

### 2. Serviços
✅ metabase: presente

### 3. Replicas
✅ metabase: 1 réplica (adequado para instalação padrão)
...

### 4. Rotas Traefik
✅ metabase: rota Host correta, TLS ok
⚠️ passHostHeader não configurado — recomendado adicionar
...

### 5. Recursos
✅ metabase: 2048M de memória (adequado)
...

### 6. Deploy
⚠️ update_config não definido — recomendado configurar start-first e rollback
...

### 7. Redes e Imagens
⚠️ Imagem usando `latest` — atenção: atualizações do Metabase podem migrar o banco automaticamente
...

### 8. Segurança
❌ MB_DB_PASS: placeholder SENHA detectado
⚠️ Banco `metabase` deve ser criado no PostgreSQL antes do primeiro deploy
...

## Ações Recomendadas (por prioridade)

### Crítico (fazer antes do deploy)
1. ...

### Recomendado
1. ...

### Opcional
1. ...
Related skills
Installs
8
GitHub Stars
4
First Seen
Mar 28, 2026