374 sintomas catalogados
Cada sintoma com causa provável e correção, ligado à lição da trilha Automação que explica o porquê. Descreva o sintoma para filtrar.
| Sintoma | Causa provável | Correção | Lição |
|---|---|---|---|
| Job falha com exit code 137 | Falta de memória (OOM Killer) | Aumente o parâmetro memory no config.toml ou reduza concorrência | Ajustando CPU, memória e storage para builds intensivos |
| Erro 'no space left on device' | Disco insuficiente para builds ou cache | Libere espaço ou aumente o disco | Ajustando CPU, memória e storage para builds intensivos |
| Builds lentos e load average alto | CPU saturada por jobs concorrentes | Reduza o número de jobs paralelos ou aumente CPUs | Ajustando CPU, memória e storage para builds intensivos |
| Builds lentos mesmo em fibra dedicada | Runner ou storage em sub-rede diferente, latência alta | Realinhe runner, storage e destino na mesma VLAN ou sub-rede | Ambientes de build e deploy em fibra dedicada: lições aprend |
| Disco do runner lotando rapidamente | Política de expiração de artefatos mal configurada | Reduza o tempo de expiração dos artefatos | Ambientes de build e deploy em fibra dedicada: lições aprend |
| Jobs rodando no ambiente errado | Tags ou variáveis de ambiente ausentes ou incorretas | Revise configuração de tags e variáveis nos runners e jobs | Ambientes de build e deploy em fibra dedicada: lições aprend |
| Erro ao tentar commitar: 'Erro de sintaxe no playbook.' | Playbook com erro de sintaxe bloqueado pelo hook. | Corrija o erro de sintaxe e tente novamente. | Ansible e Git: versionando infraestrutura como código |
| Conflito ao fazer merge de branches | Alterações simultâneas na mesma linha de um playbook. | Edite o arquivo, resolva o conflito, adicione e faça commit. | Ansible e Git: versionando infraestrutura como código |
| Arquivo sensível foi versionado por engano | Falta de configuração do .gitignore. | Adicione o arquivo ao .gitignore e remova do histórico se necessário. | Ansible e Git: versionando infraestrutura como código |
| Falha de conexão SSH | Chave SSH ausente ou permissões incorretas | Verifique se a chave privada existe e está com permissão 600 | Ansible, YAML e SSH: o trio que move a automação moderna |
| Erro de sintaxe no playbook | Indentação errada em YAML | Revise os espaços e evite tabulações | Ansible, YAML e SSH: o trio que move a automação moderna |
| Permissão negada ao instalar pacote | Falta de sudo no usuário remoto | Adicione 'become: yes' no playbook e garanta privilégio sudo | Ansible, YAML e SSH: o trio que move a automação moderna |
| Logs do Terraform não estão sendo gerados | Variáveis de ambiente TF_LOG ou TF_LOG_PATH não definidas corretamente | Revise e exporte novamente as variáveis antes de executar o Terraform | Auditoria e logs do Terraform: por onde passa o que pode dar |
| Arquivo de log cresce rapidamente e ocupa muito espaço | Nível de log muito detalhado (DEBUG/TRACE) e ausência de rotação | Reduza o nível de log e configure logrotate | Auditoria e logs do Terraform: por onde passa o que pode dar |
| Logs não aparecem no sistema centralizado | Agente de coleta não configurado corretamente ou permissões insuficientes | Verifique configuração do agente e permissões de leitura nos arquivos de log | Auditoria e logs do Terraform: por onde passa o que pode dar |
| Runner não cria novas VMs | Credenciais da nuvem inválidas ou permissões insuficientes. | Revise as credenciais e permissões. Consulte a documentação do driver. | Auto-scaling com Docker Machine e cloud providers |
| VMs não são destruídas após IdleTime | IdleTime mal configurado ou jobs presos em execução. | Ajuste IdleTime e monitore jobs stuck. | Auto-scaling com Docker Machine e cloud providers |
| Jobs falham por falta de imagem Docker | Imagem não disponível na VM criada. | Garanta que a imagem base esteja correta no config.toml. | Auto-scaling com Docker Machine e cloud providers |
| Workspace não pode ser excluído | Ainda está selecionado ou há recursos pendentes | Selecione outro workspace e destrua todos os recursos antes de excluir | Automação de ambientes efêmeros: do zero ao teardown sem int |
| Recursos não são destruídos no teardown | Permissões insuficientes ou dependências não resolvidas | Revise permissões do usuário e dependências no código Terraform | Automação de ambientes efêmeros: do zero ao teardown sem int |
| Pipeline trava na etapa de destroy | Timeout ou deadlock em recursos da nuvem | Implemente timeouts e revise dependências circulares | Automação de ambientes efêmeros: do zero ao teardown sem int |
| Playbook falha em alguns hosts | Permissões insuficientes ou SSH indisponível | Verifique acesso root/sudo e conectividade SSH | Automação de compliance e auditoria em ambientes regulados |
| Relatórios não são salvos | Permissões de escrita no destino ou erro de variável | Cheque paths e permissões dos diretórios de destino | Automação de compliance e auditoria em ambientes regulados |
| Execução de ferramenta externa falha | Dependências ausentes ou caminhos incorretos | Instale ferramentas necessárias e valide caminhos nos comandos | Automação de compliance e auditoria em ambientes regulados |
| Host da nuvem não aparece no inventário | Plugin dinâmico mal configurado ou credenciais inválidas | Revise filtros e variáveis de ambiente, consulte a documentação do plugin. | Automação de provisionamento em ambientes híbridos |
| Erro de permissão ao criar recurso | Chave de acesso insuficiente ou mal configurada | Verifique permissões do usuário na nuvem e variáveis de ambiente. | Automação de provisionamento em ambientes híbridos |
| Playbook trava em task de nuvem | Limite de API atingido ou dependência não satisfeita | Inclua delays e retries, revise ordem das tasks. | Automação de provisionamento em ambientes híbridos |
| Playbook falha com erro de autenticação | Usuário ou senha incorretos no inventário | Revise as credenciais e teste acesso SSH manualmente | Automação de redes: switches, roteadores e firewalls |
| Erro 'src file not found' ao restaurar backup | Arquivo de backup não existe ou caminho incorreto | Verifique o nome e o caminho do arquivo localmente antes de executar | Automação de redes: switches, roteadores e firewalls |
| Mudança não aplicada, mas Ansible retorna sucesso | Comando não suportado ou já presente na configuração | Revise a configuração atual do equipamento e ajuste o playbook | Automação de redes: switches, roteadores e firewalls |
| Playbook falha ao conectar via SSH | Chave SSH ausente ou permissão incorreta | Verifique permissões e autorize a chave correta com o módulo authorized_key | Automação de servidores Linux: do provisionamento à configur |
| Pacote não instala | Repositório desatualizado ou pacote inexistente | Atualize os repositórios com 'apt update' ou 'yum makecache' via Ansible antes | Automação de servidores Linux: do provisionamento à configur |
| Serviço não reinicia após alteração | Handler não foi acionado | Confirme se o task notifica corretamente o handler | Automação de servidores Linux: do provisionamento à configur |
| Usuário não removido | Usuário está logado ou processo em execução | Finalize processos do usuário antes de remover | Automação de servidores Linux: do provisionamento à configur |
| Erro de conexão com o banco de dados | Variáveis de ambiente incorretas ou serviço PostgreSQL não iniciado | Revise o arquivo inventory e garanta que o PostgreSQL está rodando | Automação distribuída: Ansible Tower e alternativas open sou |
| AWX não sobe após instalação | Portas ocupadas ou containers travados | Verifique com docker ps e libere as portas necessárias | Automação distribuída: Ansible Tower e alternativas open sou |
| Playbook falha sem logs detalhados | Permissões insuficientes ou SSH mal configurado | Ajuste as credenciais e revise as permissões dos hosts alvo | Automação distribuída: Ansible Tower e alternativas open sou |
| Erro de autenticação SSH no job do pipeline | Variável de senha SSH não definida ou incorreta | Verifique se a variável protegida SSH_PASS está cadastrada corretamente no CI/CD | Automação em pipelines: Ansible no CI/CD |
| Falha ao descriptografar arquivos com ansible-vault | Senha do vault não passada corretamente ao pipeline | Confirme se VAULT_PASS está definida e usada como --vault-password-file | Automação em pipelines: Ansible no CI/CD |
| Job de lint falha com erros de sintaxe | Playbook com erros YAML ou práticas não recomendadas | Revise o playbook e corrija os erros apontados pelo ansible-lint | Automação em pipelines: Ansible no CI/CD |
| Playbook não executa após o evento | Webhook não está chegando ao Ansible Rulebook | Verifique logs e conectividade entre o Alertmanager/Jenkins e o endpoint do Rulebook. | Automação orientada a eventos e integração com outras ferram |
| Execuções duplicadas do playbook | Eventos múltiplos não filtrados | Implemente debounce ou filtros nas regras. | Automação orientada a eventos e integração com outras ferram |
| Falha de autenticação na integração | Credenciais incorretas ou ausentes | Revise as configurações de autenticação entre as ferramentas. | Automação orientada a eventos e integração com outras ferram |
| Jobs ficam muito tempo em pending | Poucos Runners ou concurrency baixo | Aumente o número de Runners ou o valor de concurrent | Balanceamento de jobs e filas em ambientes de alta concorrên |
| Runner fica offline ou falha jobs | Excesso de jobs para a capacidade do host | Reduza o concurrent ou aumente recursos do host | Balanceamento de jobs e filas em ambientes de alta concorrên |
| Jobs são distribuídos de forma desigual | Tags mal configuradas ou Runners com capacidades diferentes | Padronize tags e ajuste recursos dos Runners | Balanceamento de jobs e filas em ambientes de alta concorrên |
| Variável sensível aparece nos logs | Variável não está marcada como masked ou valor não atende aos requisitos de masking | Marque como masked e garanta que o valor atenda aos critérios do GitLab (consulte a documentação) | Boas práticas para variáveis, tokens e permissões |
| Job falha ao acessar recurso externo | Token expirado ou com permissões insuficientes | Gere novo token com escopos corretos e atualize a variável | Boas práticas para variáveis, tokens e permissões |
| Pipeline em branch não protegida acessa segredos | Variável não está marcada como protected | Altere a configuração para protected | Boas práticas para variáveis, tokens e permissões |
| kubectl retorna 'permission denied' ao criar Pod | Usuário sem permissão RBAC | Revise roles e bindings do usuário | Caminho de uma requisição: do kubectl ao Pod em execução |
| Pod fica em Pending indefinidamente | Scheduler não encontra nó compatível | Revise nodeSelector, tolerations e recursos disponíveis | Caminho de uma requisição: do kubectl ao Pod em execução |
| Pod falha ao iniciar com erro de imagem | Imagem não encontrada ou sem acesso ao registry | Corrija o nome da imagem ou configure acesso ao registry | Caminho de uma requisição: do kubectl ao Pod em execução |
| Pods permanecem pendentes mesmo após instalação | Cluster Autoscaler não tem permissão para criar nós ou limites de grupo estão baixos | Revise permissões RBAC e aumente o valor máximo em '--nodes' | Cluster Autoscaler: dimensionamento automático da infraestru |
| Nós não são removidos mesmo ociosos | Existem pods protegidos por PodDisruptionBudget ou limite mínimo atingido | Ajuste PDBs ou diminua o valor mínimo em '--nodes' | Cluster Autoscaler: dimensionamento automático da infraestru |
| Cluster Autoscaler não reconhece grupos de nós | Configuração de autodiscovery incorreta ou tags ausentes | Verifique as tags dos grupos de nós e os argumentos de autodiscovery | Cluster Autoscaler: dimensionamento automático da infraestru |
| O módulo não é encontrado ao rodar o playbook. | Collection não instalada ou caminho fora do padrão. | Reinstale a collection e verifique o diretório ~/.ansible/collections. | Collections, Ansible Galaxy e automação modular |
| Erro de versão ao instalar uma collection. | Versão do Ansible incompatível. | Atualize o Ansible para uma versão suportada pela collection (consulte a documentação). | Collections, Ansible Galaxy e automação modular |
| Falha ao publicar collection. | Arquivo galaxy.yml ausente ou inválido. | Revise o galaxy.yml conforme a documentação oficial. | Collections, Ansible Galaxy e automação modular |
| Runner não aparece como online | Token de registro incorreto ou problemas de rede | Revise o token, a URL e a conectividade entre Runner e GitLab | Como o GitLab Runner se conecta ao GitLab e executa jobs |
| Jobs ficam pendentes e não são executados | Tags do Runner não correspondem ao job ou executor incompatível | Ajuste as tags do Runner ou o executor no .gitlab-ci.yml | Como o GitLab Runner se conecta ao GitLab e executa jobs |
| Erro de certificado SSL | Certificado do GitLab não confiável pelo sistema operacional do Runner | Adicione o certificado raiz ao sistema ou configure o Runner para confiar no certificado | Como o GitLab Runner se conecta ao GitLab e executa jobs |
| Erro: 'provider not found' | init não executado ou falha no download do provedor | Execute 'terraform init' novamente e cheque conexão com a internet | Como o Terraform funciona: ciclo de vida, plano e apply |
| Diferenças inesperadas no plan | Estado local desatualizado ou corrompido | Sincronize o estado ou recupere backup do arquivo terraform.tfstate | Como o Terraform funciona: ciclo de vida, plano e apply |
| Recursos duplicados após apply | Perda ou exclusão manual do arquivo de estado | Nunca edite ou apague terraform.tfstate manualmente; restaure backup | Como o Terraform funciona: ciclo de vida, plano e apply |
| Erro de quota excedida | Tamanho ou quantidade de recursos acima do permitido pela cloud | Reduza o sizing ou solicite aumento de quota na cloud | Como planejar recursos: sizing, limites e dependências em Te |
| Provisionamento fora de ordem | Dependências não declaradas corretamente | Adicione 'depends_on' para forçar a ordem de criação | Como planejar recursos: sizing, limites e dependências em Te |
| Custo inesperado após deploy | Recursos superdimensionados ou variáveis mal configuradas | Revise variáveis de sizing e ajuste para o necessário | Como planejar recursos: sizing, limites e dependências em Te |
| kubectl retorna erro de autenticação | Credenciais inválidas ou expiradas no kubeconfig | Atualize ou substitua as credenciais no arquivo kubeconfig | Configurando kubectl e contexto: operando múltiplos clusters |
| kubectl conecta ao cluster errado | Contexto incorreto selecionado | Use 'kubectl config use-context' para trocar para o contexto correto | Configurando kubectl e contexto: operando múltiplos clusters |
| Permissão negada ao acessar recursos | Usuário do contexto sem permissão via RBAC | Solicite permissões adequadas ao administrador do cluster | Configurando kubectl e contexto: operando múltiplos clusters |
| O Runner não executa jobs após alteração no config.toml | Serviço não foi reiniciado ou há erro de sintaxe no arquivo | Cheque o log do serviço com 'sudo journalctl -u gitlab-runner' e valide o TOML | Configurando o config.toml: executores, limites e variáveis |
| Jobs ignoram variáveis de ambiente definidas | Sintaxe incorreta no parâmetro environment | Revise a configuração: deve ser environment = ["VAR=valor"] | Configurando o config.toml: executores, limites e variáveis |
| Jobs excedem o número de execuções simultâneas esperado | Parâmetro concurrent ou limit não configurado corretamente | Verifique os valores e a posição dos parâmetros no config.toml | Configurando o config.toml: executores, limites e variáveis |
| O Runner não reconhece o executor customizado | Erro na implementação da interface ou registro do executor no código | Revise a implementação e compare com executores nativos | Contribuindo para o GitLab Runner: customizações e comunidad |
| Falha ao compilar o Runner | Dependências de Go não resolvidas ou código incompatível | Atualize as dependências e revise a sintaxe | Contribuindo para o GitLab Runner: customizações e comunidad |
| Merge request rejeitado | Falta de testes ou não conformidade com guidelines | Adicione testes e siga o padrão de código do projeto | Contribuindo para o GitLab Runner: customizações e comunidad |
| Falha de conexão SSH | Chave pública não autorizada ou usuário incorreto | Ajuste o usuário no inventário e autorize a chave SSH no managed node. | Control node, managed nodes e inventário: quem faz o quê |
| Inventário não reconhecido | Caminho ou sintaxe incorreta | Verifique o caminho do arquivo e a formatação dos grupos/hosts. | Control node, managed nodes e inventário: quem faz o quê |
| Permissão negada ao executar tarefas | Usuário sem sudo ou permissões necessárias | Ajuste as permissões do usuário ou configure become no playbook. | Control node, managed nodes e inventário: quem faz o quê |
| kubectl get nodes mostra Node NotReady | Problema de rede ou kubelet parado | Verifique logs do kubelet e conectividade de rede | Control Plane, Nodes e etcd: como o Kubernetes toma decisões |
| Pods não são agendados | kube-scheduler parado ou etcd indisponível | Reinicie o scheduler ou verifique saúde do etcd | Control Plane, Nodes e etcd: como o Kubernetes toma decisões |
| Falha ao acessar kube-apiserver | Certificados expirados ou serviço parado | Renove certificados e reinicie o kube-apiserver | Control Plane, Nodes e etcd: como o Kubernetes toma decisões |
| terraform plan mostra mudanças que você não esperava | Drift causado por alteração manual na infraestrutura | Rode terraform refresh, revise o plan, corrija o código ou o ambiente conforme necessário | Corrupção de state file e drift: quando o mundo real não bat |
| Erro de parsing ao ler o state file | Arquivo de estado corrompido | Restaurar backup íntegro do state file | Corrupção de state file e drift: quando o mundo real não bat |
| Recursos sumiram do terraform state list | State file incompleto ou corrompido | Recuperar backup ou reconstruir state manualmente | Corrupção de state file e drift: quando o mundo real não bat |
| Erro 'provider not found' ao rodar 'terraform init' | Binário do provider fora do diretório esperado ou nome incorreto | Verifique o caminho e o nome do binário conforme a estrutura exigida pela documentação | Custom Providers, plugins e integrações avançadas: onde o Te |
| Falha de autenticação ao aplicar recursos | Credenciais ou endpoint incorretos no bloco provider | Revise variáveis, secrets e URLs configurados | Custom Providers, plugins e integrações avançadas: onde o Te |
| Erros de schema ou dados inesperados | Implementação incompleta do schema ou conversão de tipos | Ajuste o schema e teste com dados reais do sistema legado | Custom Providers, plugins e integrações avançadas: onde o Te |
| O check mode não indica mudanças esperadas | O módulo usado pode não suportar check mode totalmente | Consulte a documentação do módulo e, se necessário, ajuste a lógica do playbook | Debugging avançado: verbose, check mode e dry-run |
| Verbose não mostra detalhes suficientes | Nível de verbose insuficiente | Aumente para -vvv ou -vvvv | Debugging avançado: verbose, check mode e dry-run |
| Diferenças em arquivos não aparecem no --diff | O módulo não suporta diff ou o arquivo não mudou | Verifique se o módulo aceita --diff e se há realmente diferença | Debugging avançado: verbose, check mode e dry-run |
| terraform apply tenta criar recursos já existentes | State local perdido ou desatualizado | Recupere o state remoto correto e sincronize com 'terraform state push'. | Desastres evitados (ou não) com Terraform: análise de falhas |
| Segredos aparecem em logs ou outputs | Outputs não marcados como sensitive | Adicione 'sensitive = true' nos outputs críticos. | Desastres evitados (ou não) com Terraform: análise de falhas |
| Erro de permissão ao salvar state | Backend remoto sem permissões corretas | Ajuste políticas IAM para garantir acesso de leitura e gravação ao bucket e tabela de lock. | Desastres evitados (ou não) com Terraform: análise de falhas |
| Job falha por arquivo não encontrado | Artefato não definido ou não transferido corretamente | Revise a configuração de artifacts e paths | Desenhando pipelines eficientes: dependências, paralelismo e |
| Pipeline lento mesmo com paralelismo | Jobs com dependências implícitas ou recursos compartilhados em conflito | Defina needs corretamente e isole recursos | Desenhando pipelines eficientes: dependências, paralelismo e |
| Build inconsistente entre pipelines | Uso incorreto de cache para arquivos que deveriam ser artefatos | Separe artefatos (resultados únicos) de cache (dados reaproveitáveis) | Desenhando pipelines eficientes: dependências, paralelismo e |
| Manifesto aplicado com erro de sintaxe | Faltou validação automática no pipeline | Adicione kubectl --dry-run e kubeval no CI/CD | Design de manifestos e versionamento: mantenha o controle do |
| Estado do cluster diferente do repositório | Alterações manuais via kubectl | Padronize aplicação via GitOps e bloqueie acesso direto | Design de manifestos e versionamento: mantenha o controle do |
| Rollback não funciona | Histórico incompleto ou uso de branches fora do fluxo | Garanta merge apenas via PR e mantenha histórico linear | Design de manifestos e versionamento: mantenha o controle do |
| Confusão sobre qual arquivo editar | Estrutura de diretórios desorganizada | Reestruture por ambiente e recurso, documente o padrão | Design de manifestos e versionamento: mantenha o controle do |
| Pod em CrashLoopBackOff | Erro de configuração, dependência externa indisponível ou bug no entrypoint | Verifique eventos, logs anteriores e ajuste variáveis/configuração | Diagnóstico de Pods: eventos, logs e execuções interativas |
| Logs vazios | Container falha antes de iniciar processo ou não redireciona stdout/stderr | Ajuste o entrypoint ou reconstrua a imagem para garantir logging | Diagnóstico de Pods: eventos, logs e execuções interativas |
| kubectl exec falha | Container não está rodando ou não possui shell | Altere o comando de inicialização ou adicione shell à imagem temporariamente | Diagnóstico de Pods: eventos, logs e execuções interativas |
| Job executa comportamento inesperado | Comentário desatualizado ou ausente | Atualize o comentário para refletir a lógica atual do job. | Documentação viva: mantendo pipelines compreensíveis para o |
| Erro ao incluir template | Caminho ou variável não documentada | Verifique e corrija o bloco de comentários do template, esclarecendo requisitos. | Documentação viva: mantendo pipelines compreensíveis para o |
| Equipe faz perguntas recorrentes sobre jobs | Falta de documentação viva | Inclua respostas diretamente nos comentários do YAML ou README. | Documentação viva: mantendo pipelines compreensíveis para o |
| Erro: Resource ... not found | Recurso removido fora do Terraform ou state desatualizado | Remova o recurso do state com 'terraform state rm' ou importe novamente | Erros clássicos de apply, plan e destroy: como entender e re |
| Erro: Cycle: ... | Dependência circular entre recursos | Reorganize o código para quebrar o ciclo, usando 'depends_on' se necessário | Erros clássicos de apply, plan e destroy: como entender e re |
| Erro: Provider configuration not present | Bloco provider ausente ou mal configurado | Adicione ou corrija o bloco provider no código | Erros clássicos de apply, plan e destroy: como entender e re |
| Erro de sintaxe YAML | Indentação errada ou uso de tabulação | Corrija a indentação usando apenas espaços e valide com --syntax-check | Erros frequentes: sintaxe, conexão e autenticação |
| UNREACHABLE ao rodar playbook | Host offline, firewall ou porta SSH errada | Verifique conectividade com ping/ssh e ajuste inventário | Erros frequentes: sintaxe, conexão e autenticação |
| Permission denied (publickey) | Chave SSH não autorizada no host remoto | Adicione a chave pública ao ~/.ssh/authorized_keys | Erros frequentes: sintaxe, conexão e autenticação |
| sudo: a password is required | Usuário remoto não tem sudo sem senha | Configure sudoers ou use --ask-become-pass | Erros frequentes: sintaxe, conexão e autenticação |
| Instâncias não escalam mesmo com alta carga | Política de escalabilidade mal configurada ou métrica incorreta | Revise as métricas e os thresholds definidos nas políticas | Escalando recursos: auto scaling, load balancers e grupos ge |
| Load balancer não distribui tráfego | Target group não associado corretamente ou health checks falhando | Verifique associação e parâmetros dos health checks | Escalando recursos: auto scaling, load balancers e grupos ge |
| Custo inesperado alto | Limites máximos de instâncias muito elevados | Ajuste os parâmetros max_size ou target_size | Escalando recursos: auto scaling, load balancers e grupos ge |
| Nó não entra no cluster | Token expirado ou configuração de rede incorreta | Gere novo token com 'kubeadm token create' e revise firewall | Escolhendo o modelo de cluster: bare metal, nuvem ou híbrido |
| Latência alta em pods | Rede subdimensionada ou roteamento ineficiente | Ajuste políticas de rede e revise topologia física | Escolhendo o modelo de cluster: bare metal, nuvem ou híbrido |
| Custo de nuvem disparando | Dimensionamento automático mal configurado | Ajuste limites de autoscaling e revise tipos de instância | Escolhendo o modelo de cluster: bare metal, nuvem ou híbrido |
| Execução muito lenta | Batch size (serial) pequeno demais | Aumente o valor de serial gradualmente | Estratégias para grandes ambientes: segmentação, tags e batc |
| Hosts caindo durante execução | Batch size grande demais ou tarefas pesadas | Reduza o serial e monitore recursos | Estratégias para grandes ambientes: segmentação, tags e batc |
| Tarefas não executadas | Tags ausentes ou digitadas incorretamente | Revise as tags no playbook e no comando | Estratégias para grandes ambientes: segmentação, tags e batc |
| Mudanças aplicadas em hosts errados | Segmentação de inventário incorreta | Reveja os grupos e o parâmetro -l | Estratégias para grandes ambientes: segmentação, tags e batc |
| Variáveis não aplicadas corretamente | Arquivo de variáveis no local errado ou nome incorreto | Verifique se está em group_vars/ ou host_vars/ e se o nome bate com o grupo ou host | Estrutura de diretórios: como organizar um projeto Ansible d |
| Playbook roda no ambiente errado | Inventário não especificado corretamente | Use '-i inventories/producao/hosts' ou equivalente | Estrutura de diretórios: como organizar um projeto Ansible d |
| Arquivo sensível apareceu no Git | .gitignore ausente ou mal configurado | Adicione o arquivo ao .gitignore e remova do histórico com 'git rm --cached' | Estrutura de diretórios: como organizar um projeto Ansible d |
| Variáveis diferentes em hosts similares | Valores hardcoded em vez de group_vars. | Mover variáveis para group_vars ou host_vars. | Evite armadilhas: anti-patterns e erros clássicos em Ansible |
| Serviço reiniciado mas não está rodando | Falta de validação pós-tarefa. | Adicionar checagem com fail/when. | Evite armadilhas: anti-patterns e erros clássicos em Ansible |
| Execução repetida altera arquivos múltiplas vezes | Tarefa não idempotente. | Ajustar módulo ou parâmetros para garantir idempotência. | Evite armadilhas: anti-patterns e erros clássicos em Ansible |
| Job falha com erro de permissão no Docker | Usuário do Runner não está no grupo docker | Adicione o usuário ao grupo docker e reinicie o serviço. | Executores: Shell, Docker e mais, escolha técnica e limitaçõ |
| Jobs Shell afetam arquivos do host | Falta de isolamento do Shell executor | Considere migrar para Docker ou use scripts seguros. | Executores: Shell, Docker e mais, escolha técnica e limitaçõ |
| Jobs VirtualBox são lentos | Overhead de virtualização | Aumente recursos da VM ou avalie outro executor. | Executores: Shell, Docker e mais, escolha técnica e limitaçõ |
| Playbook falha com erro de conexão SSH | Limite de sessões SSH atingido | Aumente MaxSessions e MaxStartups no sshd_config | Fatores que limitam a escala: paralelismo, SSH e gerenciamen |
| Servidor de controle fica lento ou trava | forks alto demais para a capacidade do servidor | Reduza forks ou aumente recursos de hardware | Fatores que limitam a escala: paralelismo, SSH e gerenciamen |
| Timeouts frequentes em hosts remotos | timeout baixo ou rede instável | Aumente o parâmetro timeout no ansible.cfg | Fatores que limitam a escala: paralelismo, SSH e gerenciamen |
| Execução muito lenta mesmo com forks altos | Limite de CPU/memória ou gargalo de rede | Monitore recursos e ajuste forks conforme capacidade real | Fatores que limitam a escala: paralelismo, SSH e gerenciamen |
| Permissão negada ao conectar via SSH | Permissões incorretas nos arquivos de chave | Ajuste com 'chmod 600 ~/.ssh/id_ed25519' | Gerenciamento de credenciais e acesso seguro via SSH |
| Erro: 'sudo: a password is required' | Configuração sudoers não permite NOPASSWD | Verifique /etc/sudoers.d/ansible e ajuste comandos permitidos | Gerenciamento de credenciais e acesso seguro via SSH |
| Falha ao descriptografar arquivo vault | Senha do vault incorreta ou arquivo corrompido | Confirme senha e integridade do arquivo | Gerenciamento de credenciais e acesso seguro via SSH |
| Cluster não inicia após upgrade | Incompatibilidade de versão entre componentes ou falha no etcd | Reverta usando o backup do etcd e revise a matriz de compatibilidade | Gerenciamento de upgrades, backups e políticas de retenção |
| Backups do etcd falham | Permissões insuficientes ou caminhos incorretos para certificados | Verifique os caminhos e permissões dos arquivos de certificado e diretórios de backup | Gerenciamento de upgrades, backups e políticas de retenção |
| Logs não estão sendo rotacionados | Configuração ausente ou incorreta do logrotate no nó host | Revise o arquivo em /etc/logrotate.d/ e teste manualmente a rotação | Gerenciamento de upgrades, backups e políticas de retenção |
| Runner não executa jobs | Token de registro incorreto ou Runner offline | Verifique o token e reinicie o serviço do Runner | GitLab Runner: executor, agente ou orquestrador? |
| Jobs falham com erro de permissão | Executor shell sem permissões adequadas | Ajuste permissões do usuário do Runner | GitLab Runner: executor, agente ou orquestrador? |
| Runner aparece como 'stale' no painel | Problema de rede ou firewall bloqueando comunicação | Verifique conectividade e portas liberadas | GitLab Runner: executor, agente ou orquestrador? |
| Alterações não rastreadas aparecem em produção | Aplicação direta do Terraform fora do pipeline | Restringir permissões e exigir uso de CI/CD | Governança e compliance: como não ser pego de surpresa por a |
| State corrompido ou perdido | Backend remoto sem versionamento | Ativar versionamento no bucket e backup regular | Governança e compliance: como não ser pego de surpresa por a |
| Merge de código inseguro | Scanners de compliance não integrados ao pipeline | Adicionar Checkov e tfsec como etapas obrigatórias | Governança e compliance: como não ser pego de surpresa por a |
| Release não aparece em 'helm list' | Instalação falhou ou foi feita em outro namespace | Verifique o namespace com 'helm list --all-namespaces' e repita a instalação se necessário. | Helm: gerenciando pacotes e templates de aplicações |
| Pods não sobem após upgrade | Configuração inválida em values.yaml | Revise o arquivo de valores e valide com 'helm template' antes de aplicar. | Helm: gerenciando pacotes e templates de aplicações |
| Rollback não retorna ao estado esperado | Recursos externos não são revertidos automaticamente | Verifique dependências externas e ajuste manualmente se necessário. | Helm: gerenciando pacotes e templates de aplicações |
| Erro de permissão ao instalar chart | Usuário sem permissão adequada no cluster | Solicite permissões apropriadas ou use um contexto com privilégios suficientes. | Helm: gerenciando pacotes e templates de aplicações |
| O HPA não escala os pods mesmo com alta carga | Metrics Server ausente ou sem permissão | Instale e valide o Metrics Server; verifique RBAC | Horizontal e Vertical Pod Autoscaler: escalando cargas de tr |
| Pods são reiniciados inesperadamente | VPA em modo 'Auto' aplicando mudanças frequentes | Altere o updateMode do VPA para 'Off' ou 'Initial' | Horizontal e Vertical Pod Autoscaler: escalando cargas de tr |
| Conflito entre HPA e VPA | Ambos ativos em modo automático no mesmo deployment | Deixe o VPA apenas recomendando (updateMode: Off) | Horizontal e Vertical Pod Autoscaler: escalando cargas de tr |
| Playbook não aplica mudanças | Estado já está conforme o desejado (idempotência) | Verifique se o resultado já foi alcançado; ajuste o playbook se necessário. | Infraestrutura como código: por que automatizar é inevitável |
| Erro de permissão ao rodar playbook | Usuário remoto sem sudo | Garanta que o usuário Ansible tenha permissões adequadas. | Infraestrutura como código: por que automatizar é inevitável |
| Mudanças não refletem em todos os servidores | Inventário incompleto ou hosts inacessíveis | Revise o arquivo de inventário e conectividade SSH. | Infraestrutura como código: por que automatizar é inevitável |
| Recurso criado com parâmetros errados | Código desatualizado ou erro de digitação | Revise e corrija o arquivo de configuração, depois aplique novamente. | Infraestrutura como Código: por que não provisionar mais nad |
| Erro de permissão ao aplicar | Credenciais insuficientes para o provedor | Verifique as permissões e variáveis de ambiente. | Infraestrutura como Código: por que não provisionar mais nad |
| Ambiente inconsistente após reaplicar | Mudanças manuais fora do IaC | Evite alterações manuais e reimporte recursos para o estado do IaC. | Infraestrutura como Código: por que não provisionar mais nad |
| O domínio não responde ou dá timeout | DNS não propagado ou IP externo incorreto | Verifique o registro DNS e o IP do LoadBalancer | Ingress e LoadBalancer: expondo serviços para o mundo |
| Erro de certificado inválido | Segredo TLS ausente ou certificado incorreto | Recrie o segredo TLS com os arquivos corretos | Ingress e LoadBalancer: expondo serviços para o mundo |
| Ingress não roteia para o serviço esperado | Regras de path ou host mal configuradas | Revise o YAML do Ingress e os selectors dos serviços | Ingress e LoadBalancer: expondo serviços para o mundo |
| O serviço gitlab-runner não inicia | Permissões incorretas ou dependências ausentes | Verifique logs com 'journalctl -u gitlab-runner' e ajuste permissões do usuário | Instalação do GitLab Runner: Linux, Docker e ambientes híbri |
| Runner em Docker não executa jobs | Volume ou socket do Docker não montados corretamente | Revise parâmetros '-v' e permissões do socket | Instalação do GitLab Runner: Linux, Docker e ambientes híbri |
| Erro de conexão com o GitLab | Firewall bloqueando saída ou proxy não configurado | Libere portas e configure proxy conforme necessário | Instalação do GitLab Runner: Linux, Docker e ambientes híbri |
| Nó worker não aparece como Ready | Problemas de rede, firewall ou CNI não instalado. | Verifique conectividade, portas abertas e se o CNI foi aplicado corretamente. | Instalando o Kubernetes: kubeadm, Minikube e alternativas op |
| Erro de 'swap enabled' no kubeadm init | Swap não foi desativado corretamente. | Reaplique 'swapoff -a' e edite /etc/fstab para comentar a linha do swap. | Instalando o Kubernetes: kubeadm, Minikube e alternativas op |
| kubectl não conecta ao cluster | Arquivo de configuração ausente ou permissões incorretas. | Copie admin.conf para ~/.kube/config e ajuste o owner. | Instalando o Kubernetes: kubeadm, Minikube e alternativas op |
| Ansible falha ao conectar nos hosts | As VMs ainda não estão prontas ou os IPs estão errados | Espere o Terraform terminar e confira os outputs | Integração com Ansible e outras ferramentas IaC: o que faz s |
| nginx não instala | Usuário sem permissão sudo ou rede bloqueada | Ajuste o become no playbook e verifique regras de firewall | Integração com Ansible e outras ferramentas IaC: o que faz s |
| Terraform não encontra recursos | Estado corrompido ou perdido | Recupere o state file ou reprovisione do zero | Integração com Ansible e outras ferramentas IaC: o que faz s |
| docker pull falha com 'unauthorized: authentication required' | Credenciais incorretas ou variáveis não definidas corretamente. | Revise as variáveis protegidas e garanta que estão corretas e disponíveis para o pipeline. | Integração com Docker registries e repositórios privados |
| docker login retorna 'invalid username/password' | Token expirado ou usuário sem permissão. | Gere novo token e atualize a variável protegida. | Integração com Docker registries e repositórios privados |
| docker push retorna 'denied: requested access to the resource is denied' | Permissão insuficiente do usuário/token. | Garanta que o token tem permissão de push no registry. | Integração com Docker registries e repositórios privados |
| Pods não sobem após o deploy | Imagem Docker incorreta ou tag inexistente | Verifique se a imagem foi publicada corretamente no registry e se a tag está correta no manifesto | Integração com pipelines CI/CD: deploys automatizados e roll |
| Rollout fica travado em 'progressing' | Readiness probe falhando ou recursos insuficientes no cluster | Revise as probes e o consumo de CPU/memória dos pods | Integração com pipelines CI/CD: deploys automatizados e roll |
| Rollback não retorna ao estado anterior | Histórico de rollout não foi gravado corretamente | Use o flag '--record' nos comandos de atualização e revise o histórico com 'kubectl rollout history' | Integração com pipelines CI/CD: deploys automatizados e roll |
| Métricas não aparecem no dashboard | Exporter externo não está lendo corretamente a saída do Ansible | Verifique o caminho do arquivo JSON e os logs do exporter | Integrando Ansible a sistemas de monitoramento |
| Alertas não disparam mesmo com falha | Regras de alerta mal configuradas no sistema de monitoramento | Revise as regras de alerta e os nomes das métricas | Integrando Ansible a sistemas de monitoramento |
| Exporter consome muita CPU | Volume excessivo de dados ou script ineficiente | Otimize o script e filtre apenas as métricas necessárias | Integrando Ansible a sistemas de monitoramento |
| Inventário não lista hosts | Erro de sintaxe ou caminho errado no arquivo | Revise o arquivo e valide com 'ansible-inventory --list' | Inventário dinâmico e estático: escolha, criação e manutençã |
| Inventário dinâmico retorna vazio | Credenciais ou filtros incorretos no plugin | Ajuste as credenciais e revise os filtros conforme a documentação | Inventário dinâmico e estático: escolha, criação e manutençã |
| Erro de indentação no YAML | Espaços ou tabs inconsistentes | Padronize a indentação (2 espaços) e valide novamente | Inventário dinâmico e estático: escolha, criação e manutençã |
| Job falha com erro de permissão em volumes | Userns remap altera o UID/GID dos arquivos montados | Ajuste permissões dos volumes ou use imagens compatíveis com userns | Isolamento de jobs e containers: limites do Docker executor |
| Runner não inicia após mudar o Docker | Configuração inválida no daemon.json | Verifique sintaxe JSON e reinicie o Docker | Isolamento de jobs e containers: limites do Docker executor |
| Job exige modo privilegiado mas falha | Recursos do host bloqueados por isolamento | Avalie se realmente precisa de privileged; se sim, use em runner dedicado | Isolamento de jobs e containers: limites do Docker executor |
| Pod não consegue acessar banco mesmo autorizado | Network Policy pode estar bloqueando tráfego por erro de label ou selector | Revise labels dos Pods e matchLabels da policy | Isolamento, Secrets e políticas de segurança de Pod |
| Secret não é montado no Pod | Nome do Secret ou chave incorretos no YAML | Cheque nomes e chaves, use 'kubectl describe secret' | Isolamento, Secrets e políticas de segurança de Pod |
| Pods continuam rodando como root apesar da policy | Namespace sem label de enforcement ou cluster sem suporte ao Pod Security Admission | Aplique label correta e consulte a documentação do cluster | Isolamento, Secrets e políticas de segurança de Pod |
| Job não finaliza | Comando ou container com erro, ou restartPolicy incorreto | Verifique logs do pod e ajuste o restartPolicy para Never | Job, CronJob e workflows: tarefas agendadas e pipelines dent |
| CronJob executa múltiplas vezes simultaneamente | concurrencyPolicy padrão (Allow) | Defina concurrencyPolicy: Forbid ou Replace | Job, CronJob e workflows: tarefas agendadas e pipelines dent |
| Jobs antigos acumulando no cluster | ttlSecondsAfterFinished não configurado | Adicione ttlSecondsAfterFinished ao spec do Job ou CronJob | Job, CronJob e workflows: tarefas agendadas e pipelines dent |
| Jobs não aparecem para todas as combinações | Erro na definição da matriz ou sintaxe YAML incorreta | Revise o bloco 'parallel: matrix:' e valide o YAML | Jobs parametrizados e matrizes: reduzindo repetição e aument |
| Variáveis não são reconhecidas no script | Nome da variável errado ou não interpolado corretamente | Garanta que a variável está definida e referenciada como ${VARIAVEL} | Jobs parametrizados e matrizes: reduzindo repetição e aument |
| Pipeline dispara com valores errados de parâmetro | Parâmetro não sobrescrito corretamente na interface ou API | Confirme o nome e valor do parâmetro ao iniciar o pipeline | Jobs parametrizados e matrizes: reduzindo repetição e aument |
| Job finaliza com 'execution took longer than' | Timeout insuficiente ou script lento | Aumentar timeout ou otimizar script | Jobs travando ou falhando: causas e soluções práticas |
| Permission denied ao executar script | Script sem permissão de execução | Rodar chmod +x no script antes de executar | Jobs travando ou falhando: causas e soluções práticas |
| Command not found ou builds diferentes a cada execução | Ambiente inconsistente ou dependências ausentes | Fixar imagem Docker e declarar dependências no before_script | Jobs travando ou falhando: causas e soluções práticas |
| kubectl não reconhece o novo recurso | CRD não aplicado ou erro de sintaxe no YAML | Revise o YAML do CRD e aplique novamente | Kubernetes além dos contêineres: Operators, CRDs e extensões |
| Operator não executa ações esperadas | Operator não está rodando ou falta de permissões RBAC | Verifique logs do Operator e revise as permissões | Kubernetes além dos contêineres: Operators, CRDs e extensões |
| Erro de validação ao criar recurso customizado | Schema do CRD não corresponde ao objeto criado | Ajuste o YAML do recurso para seguir o schema do CRD | Kubernetes além dos contêineres: Operators, CRDs e extensões |
| tflint retorna erro de provider | Provider não inicializado ou versão incompatível | Execute 'terraform init' antes do tflint e consulte a documentação do provider. | Lint, testes e revisão de código: o que separa o amador do p |
| checkov aponta falso positivo | Regra genérica ou configuração customizada | Revise a regra e, se necessário, use comentários para suprimir alertas específicos. | Lint, testes e revisão de código: o que separa o amador do p |
| terraform validate falha após merge | Conflito de código não resolvido | Atualize a branch local, resolva conflitos e valide novamente. | Lint, testes e revisão de código: o que separa o amador do p |
| Runner aparece como offline no GitLab | Serviço parado ou erro de registro | Verifique logs do Runner por mensagens de reconexão ou falha de registro | Logs do Runner e do pipeline: onde estão e como analisar |
| Job falha sem mensagem clara | Erro no script ou variável não definida | Analise o log detalhado do job e revise variáveis de ambiente | Logs do Runner e do pipeline: onde estão e como analisar |
| Logs do Runner não aparecem | Permissão insuficiente ou caminho errado | Execute journalctl como root ou revise o caminho do log | Logs do Runner e do pipeline: onde estão e como analisar |
| Logs não aparecem no Loki | Fluentd não está enviando logs corretamente ou Loki está inacessível | Verifique logs do Fluentd e conectividade com o serviço Loki | Logs e tracing: rastreando falhas e gargalos |
| Traces não chegam ao Jaeger | Aplicação não instrumentada corretamente ou Jaeger não está acessível | Revise a configuração do OpenTelemetry e conectividade com Jaeger | Logs e tracing: rastreando falhas e gargalos |
| Dashboards do Grafana não mostram logs | Fonte de dados Loki não configurada | Configure a fonte de dados Loki no Grafana e teste a conexão | Logs e tracing: rastreando falhas e gargalos |
| Arquivo de log não é criado | Permissões insuficientes ou caminho inexistente | Garanta que o usuário Ansible pode escrever em /var/log/ansible.log | Logs, callbacks e handlers: rastreando o que acontece |
| Handlers não executam | Tarefa não notifica handler ou não houve mudança | Confirme que a tarefa realmente altera o estado e usa notify corretamente | Logs, callbacks e handlers: rastreando o que acontece |
| Callbacks não aparecem | Callback não listado ou plugin ausente | Adicione o callback ao callback_whitelist e reinicie a execução | Logs, callbacks e handlers: rastreando o que acontece |
| Logs incompletos | Execução parcial ou interrupção do playbook | Revise o playbook e monitore possíveis abortos | Logs, callbacks e handlers: rastreando o que acontece |
| kubectl apply retorna erro de sintaxe YAML | Indentação incorreta ou campos obrigatórios faltando | Revise o arquivo YAML, corrija a indentação e valide com 'kubectl apply --dry-run=client -f arquivo.yaml' | Manifestos YAML: declarando o estado desejado de Deployments |
| Pods não sobem após aplicar Deployment | Imagem incorreta ou erro de configuração no spec | Verifique logs com 'kubectl describe pod' e ajuste a imagem ou configuração | Manifestos YAML: declarando o estado desejado de Deployments |
| Service não expõe o Deployment | Selector do Service não corresponde aos labels dos Pods | Confirme que os labels do Deployment e o selector do Service são idênticos | Manifestos YAML: declarando o estado desejado de Deployments |
| Pod reiniciando em loop | Erro de configuração ou dependência ausente | Verifique logs com kubectl logs e revise variáveis de ambiente e volumes. | Migração de workloads legados para Kubernetes: desafios e so |
| Timeout em integrações externas | Firewall, DNS ou variáveis de ambiente incorretas | Confirme conectividade de rede e valores de configuração. | Migração de workloads legados para Kubernetes: desafios e so |
| Uso de CPU/memória muito alto | Limites de recursos subdimensionados ou memory leak | Ajuste requests/limits e monitore consumo com Prometheus. | Migração de workloads legados para Kubernetes: desafios e so |
| Output vazio ou nulo | Output mal definido ou variável não passada corretamente | Revise o outputs.tf e os parâmetros do módulo | Módulos reutilizáveis e composição: o segredo para ambientes |
| Erro de dependência não resolvida | Ordem de módulos ou uso incorreto de depends_on | Adicione depends_on explicitamente no bloco do módulo | Módulos reutilizáveis e composição: o segredo para ambientes |
| Mudanças inesperadas em apply | Atualização de módulo sem versionamento | Sempre especifique a versão do módulo remoto | Módulos reutilizáveis e composição: o segredo para ambientes |
| Variável obrigatória não definida | Variável sem valor padrão e não passada na chamada | Defina a variável no bloco module ou adicione valor padrão | Módulos reutilizáveis e composição: o segredo para ambientes |
| Módulo não encontrado ao rodar o playbook | Coleção não instalada ou namespace incorreto | Verifique se a coleção foi instalada e se o nome do módulo está correto | Módulos, plugins e coleções: como o Ansible é extensível |
| Erro de permissão ao instalar coleção | Usuário sem permissão de escrita no diretório de collections | Execute o comando como superusuário ou ajuste as permissões | Módulos, plugins e coleções: como o Ansible é extensível |
| Plugin customizado não é reconhecido | Diretório de plugins não está no caminho de busca do Ansible | Adicione o caminho ao arquivo ansible.cfg em 'plugin_dirs' | Módulos, plugins e coleções: como o Ansible é extensível |
| Métricas não aparecem no Grafana | Prometheus não consegue coletar do exporter | Verifique firewall, portas e se o exporter está rodando | Monitorando recursos provisionados: integração com Prometheu |
| Exporters aparecem como DOWN no Prometheus | Endpoint incorreto ou exporter não iniciado | Confirme o endereço e reinicie o exporter | Monitorando recursos provisionados: integração com Prometheu |
| Alertas não disparam | Regra de alerta mal configurada ou sem notificações | Revise a expressão e configure canais de notificação | Monitorando recursos provisionados: integração com Prometheu |
| Pods ficam pendentes mesmo após escalar | Limite máximo de nodes atingido ou recursos insuficientes no node group. | Ajuste os limites do autoscaler ou revise o tipo de instância. | Nodes, Pools e Autoescaladores: como crescer sem perder o co |
| Cluster Autoscaler não adiciona nodes | Configuração incorreta do provider ou permissões insuficientes. | Revise argumentos do deployment e permissões de cloud provider. | Nodes, Pools e Autoescaladores: como crescer sem perder o co |
| Nodes não são removidos quando ociosos | Pods com restrições de afinidade ou recursos mínimos impedem remoção. | Revise configurações de pod disruption budget e afinidade. | Nodes, Pools e Autoescaladores: como crescer sem perder o co |
| Operator não inicia no cluster | Imagem incorreta ou permissões insuficientes | Verifique o valor de IMG, ajuste RBAC e consulte os logs do pod | Operadores Kubernetes: estendendo o cluster com automação cu |
| CRD não aparece após deploy | Erro na definição ou aplicação do CRD | Revise o YAML e re-aplique com 'kubectl apply -f config/crd' | Operadores Kubernetes: estendendo o cluster com automação cu |
| Operator não reage a mudanças no recurso | Bug na lógica de reconciliação ou falha de RBAC | Cheque os logs do Operator e revise as permissões | Operadores Kubernetes: estendendo o cluster com automação cu |
| kubectl retorna erro de conexão ao apiserver | Falha no balanceador de carga ou todos os nós de control plane indisponíveis | Verifique status do balanceador e dos nós de control plane | Operando clusters em alta disponibilidade: práticas e lições |
| Cluster perde estado após reinício | etcd corrompido ou quorum perdido | Restaure backup do etcd e revise topologia | Operando clusters em alta disponibilidade: práticas e lições |
| Backup do etcd não restaura corretamente | Backup corrompido ou incompleto | Automatize testes de restauração e revise scripts de backup | Operando clusters em alta disponibilidade: práticas e lições |
| Recursos de dev aparecem em prod | Workspaces ou diretórios não estão separados corretamente. | Verifique se cada ambiente usa seu próprio diretório ou workspace e se o backend está configurado para isolar o estado. | Organização de diretórios, módulos e workspaces: a base de u |
| Variáveis não são reconhecidas nos módulos | Faltou declarar as variáveis em variables.tf do módulo. | Adicione as variáveis necessárias em variables.tf e referencie corretamente no módulo. | Organização de diretórios, módulos e workspaces: a base de u |
| Erro ao aplicar mudanças em produção | Mistura de arquivos ou dependências circulares entre módulos. | Revise a estrutura de diretórios e a separação de responsabilidades dos módulos. | Organização de diretórios, módulos e workspaces: a base de u |
| Playbook falha sem mensagem clara | Falta de comentários e documentação sobre pré-requisitos | Adicione cabeçalho explicativo e liste dependências | Padronização, documentação e testes: o tripé da automação ro |
| Variável sobrescrita inesperadamente | Nome genérico sem prefixo | Renomeie usando prefixo da role | Padronização, documentação e testes: o tripé da automação ro |
| Role não é idempotente | Falta de teste automatizado | Implemente testes com Molecule e revise as tasks | Padronização, documentação e testes: o tripé da automação ro |
| Build de microserviço dispara pipeline de todos os outros serviços | Triggers configurados de forma global ou uso de monorepo sem paths específicos | Ajuste triggers para acionar apenas pipelines necessários e use paths para limitar escopo | Pipeline monolítico vs. microserviços: desafios e soluções n |
| Dependência quebrada após atualização em microserviço | Falta de integração ou testes automatizados entre serviços | Implemente pipelines de integração e testes de contrato | Pipeline monolítico vs. microserviços: desafios e soluções n |
| Tempo de build do monolito muito alto | Pipeline executando tudo a cada commit, sem uso de cache ou jobs condicionais | Implemente cache e use regras para rodar apenas jobs necessários | Pipeline monolítico vs. microserviços: desafios e soluções n |
| Pipeline não dispara após push | Arquivo .gitlab-ci.yml mal formatado ou ausente | Valide o YAML e confirme que está na raiz do repositório | Pipelines declarativos, multi-cloud e GitOps: o futuro da au |
| Deploy não sincroniza no cluster Kubernetes | ArgoCD não tem permissão ou está fora de sincronia | Verifique permissões RBAC e status do ArgoCD | Pipelines declarativos, multi-cloud e GitOps: o futuro da au |
| Job falha ao detectar nuvem correta | Variável de ambiente CLOUD_PROVIDER não definida | Configure variáveis no GitLab CI/CD > Settings > Variables | Pipelines declarativos, multi-cloud e GitOps: o futuro da au |
| Falha ao aplicar em uma das clouds | Credenciais ou permissões insuficientes no provider correspondente. | Verifique variáveis de ambiente e permissões nas contas de cloud. | Pipelines multi-cloud: orquestrando AWS, Azure e GCP em conj |
| Outputs não disponíveis para o pipeline seguinte | Outputs não definidos corretamente ou caminho do arquivo incorreto. | Confirme a definição dos outputs e paths usados nos scripts. | Pipelines multi-cloud: orquestrando AWS, Azure e GCP em conj |
| Validação pós-provisionamento falha | Firewall ou regras de rede bloqueando a comunicação entre clouds. | Revise regras de segurança e libere as portas necessárias. | Pipelines multi-cloud: orquestrando AWS, Azure e GCP em conj |
| Pipeline não inicia após commit | Erro de sintaxe no .gitlab-ci.yml | Rode o lint e corrija os erros apontados. | Pipelines versionáveis, testáveis e auditáveis: como manter |
| Mudança não registrada no histórico | Arquivo não foi commitado | Adicione e faça commit do .gitlab-ci.yml. | Pipelines versionáveis, testáveis e auditáveis: como manter |
| Pipeline executa jobs inesperados | Alteração não testada com dry-run | Simule o pipeline antes de aplicar mudanças. | Pipelines versionáveis, testáveis e auditáveis: como manter |
| Logs de execução incompletos | Runner mal configurado | Verifique a configuração do GitLab Runner e consulte a documentação. | Pipelines versionáveis, testáveis e auditáveis: como manter |
| Playbook falha com erro de sintaxe YAML | Indentação ou formatação incorreta | Use um validador YAML e revise espaços. | Playbooks na prática: escrevendo, rodando e depurando |
| Tarefas não executam como root | Falta de 'become: true' ou configuração de sudo | Adicione 'become: true' no playbook ou configure sudoers. | Playbooks na prática: escrevendo, rodando e depurando |
| Mudanças não aparecem no modo check | Módulo não suporta simulação | Consulte a documentação do módulo para suporte a --check. | Playbooks na prática: escrevendo, rodando e depurando |
| Pod não entra em Running | Imagem incorreta ou indisponível | Verifique o nome da imagem e conectividade com o registry | Pods, Services e Deployments: as peças centrais do Kubernete |
| Service não responde | Selector do Service não corresponde aos labels dos Pods | Ajuste os labels no Service ou no Deployment | Pods, Services e Deployments: as peças centrais do Kubernete |
| Deployment não cria réplicas suficientes | Recursos insuficientes no cluster | Libere recursos ou aumente a capacidade dos nós | Pods, Services e Deployments: as peças centrais do Kubernete |
| Usuário não consegue executar nem as ações mínimas | Permissões insuficientes na role/policy | Revise a lista de actions e ajuste a policy | Políticas de acesso e least privilege: como limitar danos an |
| Pipeline consegue alterar recursos além do escopo | Policy muito permissiva (ex: uso de *) | Restringa as actions e recursos explicitamente | Políticas de acesso e least privilege: como limitar danos an |
| Alterações em módulos sem rastreabilidade | Falta de controle de acesso ou revisão de código | Implemente pull request obrigatório e audite alterações | Políticas de acesso e least privilege: como limitar danos an |
| Pipeline falha sempre no mesmo estágio | Script ou dependência mal configurada | Revise o script e consulte os logs detalhados do job | Por que CI/CD mudou o ciclo de vida do software |
| Deploy não dispara após merge | Branch ou trigger mal configurados no .gitlab-ci.yml | Verifique as regras de only/except no pipeline | Por que CI/CD mudou o ciclo de vida do software |
| Testes não são executados | Job de teste ausente ou mal nomeado | Confirme se há um job com stage: test e script correto | Por que CI/CD mudou o ciclo de vida do software |
| Pods não reiniciam após falha | Manifesto mal configurado ou falta de recursos no cluster | Revise o manifesto YAML e verifique recursos disponíveis com 'kubectl describe node'. | Por que orquestrar contêineres: limites do Docker e a necess |
| Escalabilidade não funciona | Limite de CPU/memória atingido ou quotas de namespace | Ajuste limites de recursos e quotas no manifesto ou namespace. | Por que orquestrar contêineres: limites do Docker e a necess |
| Atualização causa downtime | Rolling update não configurado corretamente | Inclua estratégias de rolling update no deployment. | Por que orquestrar contêineres: limites do Docker e a necess |
| Métricas do kube-state-metrics não aparecem no Prometheus | ServiceMonitor não criado ou endpoint não acessível | Verifique se o ServiceMonitor do kube-state-metrics existe e se o serviço está no namespace correto | Prometheus e kube-state-metrics: métricas essenciais para pr |
| Alertas não disparam no Alertmanager | Regras de alerta mal configuradas ou Alertmanager não conectado | Revise as regras PrometheusRule e a configuração do Alertmanager | Prometheus e kube-state-metrics: métricas essenciais para pr |
| Dashboards do Grafana vazios | Datasource Prometheus não configurado ou query errada | Configure o datasource Prometheus corretamente no Grafana e revise as queries | Prometheus e kube-state-metrics: métricas essenciais para pr |
| Prometheus não coleta métricas do Runner | Endpoint de métricas não está ativo ou firewall bloqueando a porta. | Verifique listen_address no config.toml e libere a porta 9252. | Prometheus e métricas: monitorando uso e falhas |
| Métricas aparecem vazias | Runner sem jobs processados recentemente. | Execute jobs de teste para gerar dados. | Prometheus e métricas: monitorando uso e falhas |
| Alertas não disparam | Regras mal configuradas ou Prometheus não reiniciado. | Revise a sintaxe das regras e reinicie o Prometheus. | Prometheus e métricas: monitorando uso e falhas |
| Erro 'No valid credential sources found for AWS Provider' | Variáveis de ambiente não definidas ou perfil do AWS CLI ausente. | Defina AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY corretamente. | Providers na prática: autenticando e configurando AWS, Azure |
| Erro 'Error building AzureRM Client: Authenticating using the Service Principal Name failed' | Credenciais do Service Principal inválidas ou expiradas. | Gere novas credenciais e atualize as variáveis de ambiente. | Providers na prática: autenticando e configurando AWS, Azure |
| Erro 'google: could not find default credentials' | Variável GOOGLE_APPLICATION_CREDENTIALS não aponta para um arquivo válido. | Verifique o caminho e a existência do arquivo JSON da conta de serviço. | Providers na prática: autenticando e configurando AWS, Azure |
| Erro: 'State file is locked by another process' | Outro apply ou plan em execução com locking ativo. | Aguarde o término ou destrave manualmente conforme documentação do backend. | Providers, backends e o arquivo de estado: onde mora o perig |
| Arquivo de estado sumiu após init | Backend remoto está configurado, mas sem permissão de escrita. | Ajuste permissões no bucket ou storage remoto. | Providers, backends e o arquivo de estado: onde mora o perig |
| Recursos não aparecem em 'terraform state list' | Arquivo de estado corrompido ou migrado incorretamente. | Restaure backup do estado e revalide recursos. | Providers, backends e o arquivo de estado: onde mora o perig |
| Apply falha com erro de state lock | Outro processo está usando o state remoto. | Aguarde ou destrave manualmente conforme a documentação do backend. | Provisionamento multi-cloud para ambientes de teste e produç |
| Recursos criados apenas em uma nuvem | Pipeline ou variáveis configuradas incorretamente. | Revise variáveis, arquivos tfvars e parâmetros do pipeline. | Provisionamento multi-cloud para ambientes de teste e produç |
| Drift detectado no próximo apply | Recursos alterados manualmente fora do Terraform. | Recrie recursos via Terraform e evite alterações manuais. | Provisionamento multi-cloud para ambientes de teste e produç |
| Provisioner executa toda vez que aplica | Script não é idempotente ou não há lockfile | Adapte o script para checar antes de executar e criar arquivo de lock | Provisioners e data sources: quando e como usar sem comprome |
| Data source retorna erro de recurso não encontrado | Recurso externo foi removido ou renomeado fora do Terraform | Atualize o data source ou crie o recurso via Terraform | Provisioners e data sources: quando e como usar sem comprome |
| Provisioner falha por timeout | Instância ainda não está pronta para SSH | Ajuste o 'connection' e aumente o tempo de espera | Provisioners e data sources: quando e como usar sem comprome |
| Dados inconsistentes após apply | Mudanças externas não refletidas no estado | Reavalie dependências e use 'terraform refresh' se necessário | Provisioners e data sources: quando e como usar sem comprome |
| Jobs ficam muito tempo em pending | Poucos Runners ou concorrência baixa | Aumente o número de Runners ou o parâmetro concurrent | Quantos Runners você realmente precisa? |
| Runner consome 100% da CPU | Concorrência alta demais para o hardware disponível | Reduza o concurrent ou aumente recursos do host | Quantos Runners você realmente precisa? |
| Builds leves atrasam por builds pesados | Todos os jobs usam o mesmo Runner | Separe builds pesados e leves usando tags e Runners dedicados | Quantos Runners você realmente precisa? |
| Acesso negado ao tentar listar Pods | Role ou RoleBinding ausente ou incorreto. | Verifique se a Role está correta e se o RoleBinding aponta para a Service Account certa. | RBAC e Service Accounts: controle de acesso granular no Kube |
| Pod acessa recursos além do esperado | Permissões excessivas na Role ou uso da Service Account default. | Ajuste as regras da Role e garanta que o Pod usa a Service Account dedicada. | RBAC e Service Accounts: controle de acesso granular no Kube |
| Erro de autenticação ao acessar a API | Service Account não configurada no Pod ou token ausente. | Confirme o campo serviceAccountName no spec do Pod e a existência do token. | RBAC e Service Accounts: controle de acesso granular no Kube |
| kubectl retorna erro de conexão ao apiserver | apiserver não inicializado ou etcd indisponível | Verifique logs do apiserver e status do etcd | Recuperação de falhas no Control Plane e etcd |
| etcdctl endpoint health mostra 'unhealthy' | etcd corrompido ou restauração incompleta | Refaça o restore do snapshot e valide certificados | Recuperação de falhas no Control Plane e etcd |
| Falha ao adicionar node ao Control Plane | Token expirado ou certificados inválidos | Gere novo token com kubeadm token create e valide certificados | Recuperação de falhas no Control Plane e etcd |
| Output vazio ou null | Recurso não foi criado ou referência errada | Verifique se o recurso existe e se o nome está correto no output | Recursos, outputs e dependências: a anatomia de um main.tf f |
| Erro de dependência cíclica | depends_on mal configurado | Revise as dependências explícitas e remova loops desnecessários | Recursos, outputs e dependências: a anatomia de um main.tf f |
| Ordem errada de criação | Faltou referência ou depends_on | Adicione referências diretas ou depends_on para garantir a ordem | Recursos, outputs e dependências: a anatomia de um main.tf f |
| Runner não aparece como online | Token incorreto, serviço não iniciado ou problemas de rede | Verifique o token, reinicie o serviço com 'sudo gitlab-runner restart' e teste a conectividade | Registro do Runner: tokens, escopos e troubleshooting inicia |
| Erro 'invalid token' ao registrar | Token expirado ou copiado do escopo errado | Gere um novo token no escopo correto | Registro do Runner: tokens, escopos e troubleshooting inicia |
| Jobs não são executados | Tags do Runner não correspondem às do job | Ajuste as tags do Runner ou do job no .gitlab-ci.yml | Registro do Runner: tokens, escopos e troubleshooting inicia |
| Pod é finalizado com OOMKilled | Limit de memória muito baixo ou vazamento de memória na aplicação | Aumente o limit de memória ou corrija o vazamento | Requests, Limits e Quality of Service: controlando recursos |
| Pod fica lento sob carga | Limit de CPU baixo causando throttling | Aumente o limit de CPU ou otimize a aplicação | Requests, Limits e Quality of Service: controlando recursos |
| Pods críticos sendo mortos antes de outros | Classe QoS inadequada (Burstable ou BestEffort) | Configure requests e limits iguais para garantir classe Guaranteed | Requests, Limits e Quality of Service: controlando recursos |
| Role não encontrada ao executar o playbook | Diretório de roles não está no 'roles_path' ou role não instalada | Ajuste o 'roles_path' em 'ansible.cfg' ou instale a role | Roles e reuso: compondo automação como Lego |
| Erro de dependência não resolvida | Role dependente não instalada ou nome incorreto em 'meta/main.yml' | Instale a role dependente e corrija o nome | Roles e reuso: compondo automação como Lego |
| Variáveis não aplicadas na role | Variáveis não definidas em 'defaults' ou sobrescritas no playbook | Defina variáveis corretamente em 'defaults/main.yml' ou no playbook | Roles e reuso: compondo automação como Lego |
| Jobs ficam em pending por muito tempo | Runner compartilhado saturado ou poucos runners dedicados | Adicione mais runners ou distribua melhor os projetos | Runner compartilhado ou dedicado? Decidindo para cada projet |
| Runner dedicado executando jobs de outros projetos | Runner não está locked ou tags mal configuradas | Configure --locked=true e ajuste tags | Runner compartilhado ou dedicado? Decidindo para cada projet |
| Vazamento de arquivos temporários entre builds | Runner compartilhado sem isolamento adequado | Use executores como Docker ou migre para runner dedicado | Runner compartilhado ou dedicado? Decidindo para cada projet |
| Jobs falham por falta de recursos | Runner subdimensionado | Aumente CPU/RAM ou distribua jobs | Runner compartilhado ou dedicado? Decidindo para cada projet |
| Runner aparece online mas jobs não rodam | Tags do job não coincidem com as do Runner | Ajuste as tags no job ou no Runner | Runner offline, jobs na fila: como destravar e restaurar |
| Erro de token inválido ao registrar | Token expirado ou copiado errado | Pegue o token atualizado no painel do GitLab | Runner offline, jobs na fila: como destravar e restaurar |
| Jobs ficam stuck indefinidamente | Limite de workers baixo ou jobs travados | Aumente 'concurrent' e limpe jobs stuck manualmente | Runner offline, jobs na fila: como destravar e restaurar |
| Runner some após reiniciar | Configuração corrompida ou permissão errada | Revise config.toml e permissões do usuário gitlab-runner | Runner offline, jobs na fila: como destravar e restaurar |
| Variável não disponível no job | Branch não é protegido ou variável não está marcada como Protected | Ajuste o escopo da variável ou rode o pipeline em branch protegido | Secrets, variáveis protegidas e acesso a sistemas externos |
| Valor da variável aparece em logs | Variável não está marcada como Masked | Edite a variável e marque a opção Masked | Secrets, variáveis protegidas e acesso a sistemas externos |
| Falha ao acessar API externa | Token inválido ou variável não definida | Verifique o valor da variável e se está marcada como Protected | Secrets, variáveis protegidas e acesso a sistemas externos |
| State file exposto em repositório | Falta de .gitignore ou versionamento manual | Adicione .gitignore e remova arquivos sensíveis do histórico | Segredos, credenciais e state file: onde está o risco real |
| Segredos aparecem em logs do Terraform | Variáveis não marcadas como sensitive | Adicione 'sensitive = true' nas variáveis confidenciais | Segredos, credenciais e state file: onde está o risco real |
| Erro de permissão ao acessar backend remoto | Permissões IAM ou ACLs insuficientes | Revise políticas de acesso do bucket ou storage | Segredos, credenciais e state file: onde está o risco real |
| State file não criptografado | Backend local ou configuração de criptografia ausente | Migre para backend remoto com criptografia ativada | Segredos, credenciais e state file: onde está o risco real |
| Permissões não mudam após rodar o playbook | Task não está idempotente ou módulo errado usado | Troque shell por módulos declarativos como file | Segurança em playbooks: idempotência, validação e compliance |
| Logs não aparecem em /var/log/ansible.log | log_path não configurado corretamente ou permissões insuficientes | Ajuste o ansible.cfg e permissões do arquivo | Segurança em playbooks: idempotência, validação e compliance |
| Playbook passa mas configuração não foi aplicada | Falta de tasks de validação | Inclua tasks de verificação após aplicar mudanças | Segurança em playbooks: idempotência, validação e compliance |
| Pods sem sidecar injetado | Namespace sem label de injeção automática | Aplique 'kubectl label namespace <ns> istio-injection=enabled' e recrie os pods | Service Mesh com Istio e Linkerd: controle avançado de tráfe |
| Tráfego entre serviços falha | Política de autorização restritiva ou ausência de mTLS | Revise AuthorizationPolicy e certifique-se de que mTLS está habilitado | Service Mesh com Istio e Linkerd: controle avançado de tráfe |
| Métricas não aparecem no Prometheus | Service Mesh não configurado para exportar métricas | Verifique configuração de Prometheus no mesh e se os endpoints estão acessíveis | Service Mesh com Istio e Linkerd: controle avançado de tráfe |
| Recursos criados sem tags ou nomes corretos | Variáveis não foram referenciadas corretamente no HCL | Revise o uso de var.common_tags e interpolação nos blocos de recurso | Tags, labels e naming conventions: a diferença entre caos e |
| Erro de sintaxe ao aplicar labels no GCP | Uso de caracteres inválidos em labels | Ajuste as labels para conter apenas letras minúsculas, números, hífen e underscore | Tags, labels e naming conventions: a diferença entre caos e |
| Terraform não reconhece tags obrigatórias no módulo | Faltou passar mandatory_tags ao chamar o módulo | Inclua mandatory_tags na chamada do módulo no root module | Tags, labels e naming conventions: a diferença entre caos e |
| Conexões SSH caindo ou lentidão extrema | forks alto demais ou falta de ControlPersist | Reduza forks e ative ControlPersist no ansible.cfg | Técnicas para grandes ambientes: delegação, pools e performa |
| Tarefas rodando no host errado | delegate_to mal configurado | Revise delegate_to e teste com um host de teste | Técnicas para grandes ambientes: delegação, pools e performa |
| Fatos não sendo reutilizados | fact_caching não configurado ou caminho errado | Verifique fact_caching_connection e permissões do diretório | Técnicas para grandes ambientes: delegação, pools e performa |
| Erro 'undefined variable' ao aplicar template | Variável não foi definida em nenhum escopo | Defina a variável no inventário, group_vars ou host_vars | Templates Jinja2 e Ansible Vault: configurando e protegendo |
| Arquivo Vault aparece em texto aberto | Arquivo não foi criptografado corretamente | Use 'ansible-vault encrypt arquivo.yml' para proteger | Templates Jinja2 e Ansible Vault: configurando e protegendo |
| Playbook pede senha do Vault repetidamente | Senha incorreta ou múltiplos arquivos Vault com senhas diferentes | Confirme a senha e unifique senhas dos arquivos se possível | Templates Jinja2 e Ansible Vault: configurando e protegendo |
| Erro de incompatibilidade de provider | Provider não suportado ou versão incompatível com o OpenTofu | Atualize o provider ou consulte a documentação do OpenTofu para suporte | Terraform Cloud, OpenTofu e o futuro do IaC open source |
| Diferenças inesperadas no plano | Mudanças de sintaxe ou comportamento entre versões | Releia os changelogs e teste em ambiente isolado | Terraform Cloud, OpenTofu e o futuro do IaC open source |
| Falha ao inicializar backend remoto | Configuração de backend incompatível | Ajuste o backend para formatos suportados pelo OpenTofu | Terraform Cloud, OpenTofu e o futuro do IaC open source |
| Pipeline falha no init | Backend remoto não configurado ou credenciais ausentes. | Revise variáveis de ambiente e backend. | Terraform em pipelines CI/CD: integração com GitLab CI e Git |
| Secrets aparecem em logs | Comando mal escrito ou variáveis expostas. | Use variáveis de ambiente e nunca exiba valores sensíveis. | Terraform em pipelines CI/CD: integração com GitLab CI e Git |
| Apply roda em branch errado | Condição de branch mal definida. | Ajuste if/only para restringir ao branch correto. | Terraform em pipelines CI/CD: integração com GitLab CI e Git |
| State corrompido ou perdido | Uso de backend local ou concorrência sem lock. | Implemente backend remoto com locking. | Terraform em pipelines CI/CD: integração com GitLab CI e Git |
| Erro: Provider não encontrado | Provider não declarado ou nome incorreto | Verifique o bloco provider e consulte a documentação oficial | Terraform, HCL e o ecossistema: por que essa stack é padrão |
| Erro de sintaxe no HCL | Parênteses, chaves ou aspas faltando | Revise a sintaxe e use 'terraform validate' para identificar o erro | Terraform, HCL e o ecossistema: por que essa stack é padrão |
| Recursos não são criados na ordem esperada | Faltam dependências explícitas | Use a propriedade 'depends_on' quando necessário | Terraform, HCL e o ecossistema: por que essa stack é padrão |
| Pods continuam se comunicando apesar das Network Policies | O CNI instalado não suporta Network Policies ou há políticas permissivas demais. | Confirme suporte do CNI e revise as regras aplicadas. | Topologia e redes: segmentação, namespaces e políticas de ac |
| Serviço interno ficou inacessível após aplicar políticas | Política bloqueou tráfego essencial por engano. | Revise as regras e adicione exceções necessárias. | Topologia e redes: segmentação, namespaces e políticas de ac |
| Pods não recebem labels esperados | Erro de sintaxe ou label não aplicado corretamente. | Use 'kubectl get pods --show-labels' para checar e corrija a aplicação de labels. | Topologia e redes: segmentação, namespaces e políticas de ac |
| Pipeline não inicia via trigger | Token inválido ou permissão insuficiente | Revise o token e permissões do trigger no projeto | Triggers, schedules e pipelines dinâmicos: automação sem lim |
| Schedule não executa no horário esperado | Fuso horário incorreto ou usuário desativado | Ajuste o fuso horário e confirme que o usuário criador está ativo | Triggers, schedules e pipelines dinâmicos: automação sem lim |
| Pipeline encadeado não aparece como filho | Configuração de trigger job incorreta | Revise o bloco 'trigger' e use 'strategy: depend' se necessário | Triggers, schedules e pipelines dinâmicos: automação sem lim |
| Valor inesperado de variável em um host | Conflito entre group_vars, host_vars e extra vars | Verifique a ordem de precedência e revise onde cada variável foi definida | Variáveis e precedence: quem manda no valor final |
| Variável undefined durante execução | Variável não definida em nenhum lugar ou erro de digitação | Confirme o nome e defina a variável no nível correto | Variáveis e precedence: quem manda no valor final |
| Facts não disponíveis | Coleta de facts desabilitada ou erro de conexão | Habilite gather_facts: true no playbook e teste a conectividade | Variáveis e precedence: quem manda no valor final |
| Erro: variável não definida | Variável obrigatória sem valor padrão e sem valor fornecido. | Defina a variável no arquivo .tfvars, na linha de comando ou como variável de ambiente. | Variáveis, locals e arquivos tfvars: parametrização sem gamb |
| Valor inesperado em recurso | Arquivo .tfvars errado ou variável sobrescrita por -var na linha de comando. | Verifique a ordem das fontes de valor e revise os arquivos .tfvars usados. | Variáveis, locals e arquivos tfvars: parametrização sem gamb |
| Mensagem de erro customizada ao aplicar | Valor inválido conforme validação do bloco variable. | Corrija o valor para atender à condição de validação. | Variáveis, locals e arquivos tfvars: parametrização sem gamb |
| Erro: 'Error acquiring the state lock' | Outro processo está aplicando mudanças ou lock não foi liberado. | Aguarde o processo terminar ou libere o lock manualmente conforme a documentação do backend. | Versionamento de código e estado: como não perder tudo em um |
| Arquivo .tfstate foi versionado por engano | .gitignore mal configurado ou ausente. | Adicione .tfstate ao .gitignore e remova o arquivo do repositório. | Versionamento de código e estado: como não perder tudo em um |
| Estado remoto não aparece no bucket | Configuração de backend incorreta ou falta de permissão. | Revise o bloco backend e as permissões do bucket. | Versionamento de código e estado: como não perder tudo em um |
| Pipeline não inicia após commit | Erro de sintaxe YAML ou indentação incorreta | Valide o YAML com um linter e corrija a indentação | YAML do .gitlab-ci.yml: stages, scripts e includes avançados |
| Job incluído não aparece no pipeline | Caminho do include incorreto ou arquivo ausente | Verifique o caminho e a existência do arquivo incluído | YAML do .gitlab-ci.yml: stages, scripts e includes avançados |
| Variável não é substituída no script | Variável não definida no escopo correto | Defina a variável no nível global ou do job conforme necessário | YAML do .gitlab-ci.yml: stages, scripts e includes avançados |
