promovaweb-devops-review-mautic-stack

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Review Mautic Stack

Mautic栈审查

Executa uma auditoria completa do arquivo
mautic.yaml
e reporta conformidade, problemas e sugestões.
mautic.yaml
文件执行完整审计,并输出合规性结果、存在的问题和改进建议。

Instruções de Execução

执行说明

Quando esta skill for invocada, siga exatamente este roteiro:
调用此技能时,请严格按照以下流程执行:

Passo 1 — Ler os arquivos

步骤1 — 读取文件

Leia o arquivo
mautic.yaml
completo. Leia também
mysql.yaml
para verificar a consistência das credenciais de banco.
读取完整的
mautic.yaml
文件,同时读取
mysql.yaml
文件以验证数据库凭证的一致性。

Passo 2 — Executar todos os checks abaixo

步骤2 — 执行所有以下检查项

Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).
执行每个检查块并记录结果(✅ 正常 / ⚠️ 注意 / ❌ 错误)。

Passo 3 — Gravar o resultado

步骤3 — 保存结果

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

将完整审计报告保存为名为mautic.audit.md的文件。

Checks de Verificação

检查项

1. Variáveis de Ambiente Obrigatórias

1. 必填环境变量

Verifique se todas as variáveis abaixo estão definidas no anchor
x-mautic-db-config
:
Banco de dados MySQL/Percona (
x-mautic-db-config
)
  • MAUTIC_DB_HOST
    — deve ser definido (padrão:
    mysql
    )
  • MAUTIC_DB_USER
    — deve ser definido (não deve ser
    root
    )
  • MAUTIC_DB_PASSWORD
    — deve existir e não deve ser o placeholder
    SENHA_MAUTIC
    , compare com a senha definida em
    mysql.yaml
  • MAUTIC_DB_NAME
    — deve ser definido (padrão:
    mautic
    )

检查以下所有变量是否都在锚点
x-mautic-db-config
中定义:
MySQL/Percona数据库(
x-mautic-db-config
  • MAUTIC_DB_HOST
    — 必须定义(默认值:
    mysql
  • MAUTIC_DB_USER
    — 必须定义(不能是
    root
  • MAUTIC_DB_PASSWORD
    — 必须存在,且不能是占位符
    SENHA_MAUTIC
    ,与
    mysql.yaml
    中定义的密码比对
  • MAUTIC_DB_NAME
    — 必须定义(默认值:
    mautic

2. Serviços Obrigatórios

2. 必填服务

Verifique se todos estes serviços estão presentes:
ServiçoObrigatório
mautic_web
Sim
mautic_cron
Sim
mautic_worker
Sim

检查是否存在以下所有服务:
服务是否必填
mautic_web
mautic_cron
mautic_worker

3. Variáveis por Serviço

3. 各服务专属变量

Verifique as variáveis específicas de cada serviço:
ServiçoVariávelValor Esperado
mautic_web
DOCKER_MAUTIC_LOAD_TEST_DATA
"false"
(não carregar dados de teste em produção)
mautic_cron
DOCKER_MAUTIC_ROLE
mautic_cron
mautic_worker
DOCKER_MAUTIC_ROLE
mautic_worker
Alertar se
DOCKER_MAUTIC_LOAD_TEST_DATA
não for
"false"
em produção.

检查每个服务的专属变量:
服务变量预期值
mautic_web
DOCKER_MAUTIC_LOAD_TEST_DATA
"false"
(生产环境不要加载测试数据)
mautic_cron
DOCKER_MAUTIC_ROLE
mautic_cron
mautic_worker
DOCKER_MAUTIC_ROLE
mautic_worker
如果生产环境下
DOCKER_MAUTIC_LOAD_TEST_DATA
的值不是
"false"
,需要发出告警。

4. Replicas dos Serviços

4. 服务副本数

Verifique a quantidade de réplicas de cada serviço:
ServiçoRéplicas MínimasObservação
mautic_web
1Interface web principal
mautic_cron
1Não deve ter mais de 1 (evita execuções duplicadas)
mautic_worker
1Pode escalar para mais workers
Alertar se
mautic_cron
tiver mais de 1 réplica (pode causar execuções duplicadas de cron jobs).

检查每个服务的副本数量:
服务最小副本数备注
mautic_web
1主Web界面
mautic_cron
1不能超过1个(避免重复执行)
mautic_worker
1可以扩容更多worker
如果
mautic_cron
的副本数超过1,需要发出告警(可能导致cron任务重复执行)。

5. Rotas Traefik

5. Traefik路由

Para o serviço
mautic_web
, verifique:
Âncora de endereço (
x-mautic-app-url
):
  • A âncora
    x-mautic-app-url
    deve existir e conter um domínio válido (não placeholder como
    mautic.agenciasynca.com.br
    )
  • O domínio na âncora deve ser idêntico ao domínio dentro de
    Host(...)
    na label
    traefik.http.routers.mautic.rule
  • Se não forem iguais, reportar como ❌ Erro: inconsistência entre
    x-mautic-app-url
    e a regra Traefik
Labels obrigatórias:
  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.mautic.rule
    — deve conter
    Host(...)
    com domínio válido e coincidir com
    x-mautic-app-url
  • traefik.http.routers.mautic.entrypoints=websecure
  • traefik.http.routers.mautic.tls.certresolver=letsencryptresolver
  • traefik.http.routers.mautic.service=mautic
  • traefik.http.services.mautic.loadbalancer.server.port=80
Regras:
  • mautic_cron
    e
    mautic_worker
    não devem ter labels Traefik (serviços de background)

针对
mautic_web
服务,检查:
地址锚点(
x-mautic-app-url
):
  • 锚点
    x-mautic-app-url
    必须存在,且包含有效域名(不能是
    mautic.agenciasynca.com.br
    这类占位符)
  • 锚点中的域名必须与
    traefik.http.routers.mautic.rule
    标签的
    Host(...)
    中的域名完全一致
  • 如果不一致,标记为❌ 错误:
    x-mautic-app-url
    与Traefik规则不一致
必填标签:
  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.mautic.rule
    — 必须包含带有效域名的
    Host(...)
    ,且与
    x-mautic-app-url
    一致
  • traefik.http.routers.mautic.entrypoints=websecure
  • traefik.http.routers.mautic.tls.certresolver=letsencryptresolver
  • traefik.http.routers.mautic.service=mautic
  • traefik.http.services.mautic.loadbalancer.server.port=80
规则:
  • mautic_cron
    mautic_worker
    不能有Traefik标签(属于后台服务)

6. Volumes Compartilhados

6. 共享存储卷

Verifique o anchor
x-mautic-volumes
e se todos os volumes são compartilhados entre todos os serviços:
VolumeCaminhoDeve Ser Compartilhado
mautic_config
/var/www/html/config
Entre todos os serviços
mautic_logs
/var/www/html/var/logs
Entre todos os serviços
mautic_media_files
/var/www/html/docroot/media/files
Entre todos os serviços
mautic_media_images
/var/www/html/docroot/media/images
Entre todos os serviços
Alertar se algum serviço não estiver usando o anchor
*mautic-volumes
.

检查锚点
x-mautic-volumes
,以及所有存储卷是否在所有服务之间共享:
存储卷路径共享要求
mautic_config
/var/www/html/config
所有服务共享
mautic_logs
/var/www/html/var/logs
所有服务共享
mautic_media_files
/var/www/html/docroot/media/files
所有服务共享
mautic_media_images
/var/www/html/docroot/media/images
所有服务共享
如果有任何服务未使用锚点
*mautic-volumes
,需要发出告警。

7. Recursos dos Containers

7. 容器资源配置

Para cada serviço, verifique os limites de recursos:
ServiçoCPU MínimoMemória Máxima
mautic_web
"1"1024M
mautic_cron
verificar se tem limits definidos
mautic_worker
verificar se tem limits definidos
Alertar se
mautic_cron
ou
mautic_worker
não tiverem
resources.limits
definidos.

检查每个服务的资源限制:
服务最低CPU最大内存
mautic_web
"1"1024M
mautic_cron
检查是否定义了资源限制
mautic_worker
检查是否定义了资源限制
如果
mautic_cron
mautic_worker
未定义
resources.limits
,需要发出告警。

8. Configuração de Deploy

8. 部署配置

Para cada serviço, verifique:
  • mode: replicated
    — todos devem ser
    replicated
  • placement.constraints
    — deve incluir
    node.role == manager
  • Verificar se há
    update_config
    com
    order: start-first
    e
    failure_action: rollback
    (recomendado)

检查每个服务的以下配置:
  • mode: replicated
    — 所有服务都必须是
    replicated
    模式
  • placement.constraints
    — 必须包含
    node.role == manager
  • 检查是否配置了
    update_config
    ,包含
    order: start-first
    failure_action: rollback
    (推荐配置)

9. Redes e Imagens

9. 网络与镜像

Redes:
  • Todos os serviços devem estar na rede
    network_swarm_public
  • A rede deve ser declarada como
    external: true
    na seção
    networks:
Imagens:
  • Todos os serviços devem usar
    *mautic-image
    (anchor)
  • Verificar se a imagem usa tag específica de versão em vez de
    latest
    (recomendado em produção)

网络:
  • 所有服务都必须加入
    network_swarm_public
    网络
  • 该网络必须在
    networks:
    部分声明为
    external: true
镜像:
  • 所有服务都必须使用
    *mautic-image
    锚点
  • 检查镜像是否使用了具体版本标签,而非
    latest
    (生产环境推荐使用固定版本)

10. Segurança

10. 安全检查

  • MAUTIC_DB_PASSWORD
    não deve ser
    SENHA_MAUTIC
    (placeholder)
  • MAUTIC_DB_USER
    não deve ser
    root
    (privilégio excessivo)
  • DOCKER_MAUTIC_LOAD_TEST_DATA
    deve ser
    "false"
    em produção
  • Verificar se o banco
    mautic
    existe no MySQL (usuário
    mautic
    com acesso apenas ao banco
    mautic
    )

  • MAUTIC_DB_PASSWORD
    不能是占位符
    SENHA_MAUTIC
  • MAUTIC_DB_USER
    不能是
    root
    (权限过高)
  • 生产环境下
    DOCKER_MAUTIC_LOAD_TEST_DATA
    必须为
    "false"
  • 检查MySQL中是否存在
    mautic
    数据库(
    mautic
    用户仅拥有该数据库的访问权限)

Formato do Relatório de Saída

输出报告格式

Ao final, produza um relatório estruturado:
undefined
最终输出结构化报告如下:
undefined

Relatório de Auditoria — mautic.yaml

审计报告 — mautic.yaml

Data: <data atual>
日期: <当前日期>

Resumo

摘要

  • Total de checks: X
  • ✅ OK: X
  • ⚠️ Atenções: X
  • ❌ Erros: X
  • 总检查项: X
  • ✅ 正常: X
  • ⚠️ 注意项: X
  • ❌ 错误项: X

Resultados por Categoria

各分类检查结果

1. Variáveis de Ambiente

1. 环境变量

✅ MAUTIC_DB_HOST: definido como
mysql
❌ MAUTIC_DB_PASSWORD: usando placeholder SENHA_MAUTIC — troque antes do deploy ...
✅ MAUTIC_DB_HOST: 已定义为
mysql
❌ MAUTIC_DB_PASSWORD: 使用占位符SENHA_MAUTIC — 部署前请替换 ...

2. Serviços

2. 服务

✅ mautic_web: presente ✅ mautic_cron: presente ✅ mautic_worker: presente
✅ mautic_web: 已存在 ✅ mautic_cron: 已存在 ✅ mautic_worker: 已存在

3. Variáveis por Serviço

3. 各服务专属变量

✅ mautic_web: DOCKER_MAUTIC_LOAD_TEST_DATA=false ✅ mautic_cron: DOCKER_MAUTIC_ROLE=mautic_cron ...
✅ mautic_web: DOCKER_MAUTIC_LOAD_TEST_DATA=false ✅ mautic_cron: DOCKER_MAUTIC_ROLE=mautic_cron ...

4. Replicas

4. 副本数

✅ mautic_cron: 1 réplica (sem risco de duplicação) ⚠️ mautic_worker: sem resource limits definidos ...
✅ mautic_cron: 1个副本(无重复执行风险) ⚠️ mautic_worker: 未定义资源限制 ...

5. Rotas Traefik

5. Traefik路由

✅ mautic_web: rota Host correta, TLS ok ✅ mautic_cron: sem Traefik (correto) ...
✅ mautic_web: Host路由配置正确,TLS正常 ✅ mautic_cron: 无Traefik配置(符合要求) ...

6. Volumes

6. 存储卷

✅ mautic_config: compartilhado entre todos os serviços ✅ mautic_media_files: compartilhado entre todos os serviços ...
✅ mautic_config: 所有服务共享 ✅ mautic_media_files: 所有服务共享 ...

7. Recursos

7. 资源配置

⚠️ mautic_cron: sem resource limits — recomendado definir ...
⚠️ mautic_cron: 未定义资源限制 — 建议配置 ...

8. Deploy

8. 部署配置

⚠️ update_config não definido — recomendado configurar start-first e rollback ...
⚠️ 未定义update_config — 建议配置start-first和rollback策略 ...

9. Redes e Imagens

9. 网络与镜像

⚠️ Imagem usando
latest
— considere fixar uma versão em produção ...
⚠️ 镜像使用
latest
标签 — 生产环境建议固定具体版本 ...

10. Segurança

10. 安全检查

❌ MAUTIC_DB_PASSWORD: placeholder SENHA_MAUTIC detectado ...
❌ MAUTIC_DB_PASSWORD: 检测到占位符SENHA_MAUTIC ...

Ações Recomendadas (por prioridade)

建议操作(按优先级排序)

Crítico (fazer antes do deploy)

严重(部署前必须修复)

  1. ...
  1. ...

Recomendado

推荐

  1. ...
  1. ...

Opcional

可选

  1. ...
undefined
  1. ...
undefined