Pergunta de entrevista para Engenheiro DevOps

Como funciona o state do Terraform, e como você o gerencia em um time?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

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

Exemplo falado, em primeira pessoa

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 funciona

Perguntas 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

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot