O state é o registro do Terraform de quais recursos reais correspondem a quais endereços de configuração, mais atributos em cache que ele usa para calcular um plan. Para um time ele precisa viver em um backend remoto com locking, como o S3 com suporte nativo a lockfile ou um backend gerenciado, para que dois applies não rodem ao mesmo tempo. Nunca faça commit dele no git, já que ele guarda segredos em texto puro, e divida por raio de impacto em vez de manter um arquivo gigante.
Por que os entrevistadores perguntam isso
É no state que os times se machucam, então esta pergunta separa quem já rodou Terraform em produção de quem só seguiu um tutorial. O entrevistador quer ouvir sobre locking, backends remotos, segredos no state e divisão de arquivos de state. Os desdobramentos normalmente vão para recuperação: o que você faz quando o state diverge, quando alguém apaga um recurso na mão ou quando um apply é interrompido no meio.
Como estruturar sua resposta
- Defina o state como o mapeamento entre configuração e recursos reais.
- Explique por que state remoto mais locking é obrigatório em um time.
- Cubra segredos no state e controle de acesso ao backend.
- Descreva como você divide o state e por que o raio de impacto guia isso.
Exemplo de resposta
O state é o mapa entre o que eu escrevi em código e o que de fato existe no provedor, indexado por endereço de recurso, mais um cache de atributos para o plan não precisar ler tudo do zero. Em um time ele vai para um backend remoto com locking, para que duas pessoas rodando apply ao mesmo tempo não consigam corrompê-lo. O que surpreende as pessoas é que o state contém os atributos dos recursos literalmente, então senhas de banco e chaves geradas ficam ali em texto puro; isso significa que o bucket é criptografado, versionado e restrito à role do pipeline, não legível por todo mundo. Sobre organização, eu divido por raio de impacto e por taxa de mudança. Rede e contas mudam raramente e ganham o seu próprio state, cada serviço ou ambiente ganha o dele, e eles leem uns dos outros via data sources ou outputs publicados em vez de um módulo raiz segurando tudo. O motivo prático é que um arquivo de state com quinhentos recursos deixa todo plan lento e todo erro enorme. Para recuperação eu conto com versionamento do bucket mais state mv e import, em vez de editar o arquivo na mão.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- O que você faz se alguém apaga um recurso pelo console?
- Como você refatoraria a estrutura de módulos sem destruir recursos?
- Como você se recupera de um lock de state deixado por um apply que travou?
Mais perguntas para Engenheiro DevOps
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas