Acabei de passar no Terraform Associate (004) — o que eu gostaria de ter sabido
Notas honestas do dia seguinte: quais perguntas apareceram, onde o tempo foi, o que estudei intensivamente e acabou não importando, e o que subestimei.
Fiz o Terraform Associate 004 ontem e passei na primeira tentativa. Este não é um post "aqui está o que estudar" — há muitos desses, incluindo o nosso próprio. Este é o post que eu gostaria de ter lido na noite anterior, enquanto tudo ainda está fresco.
Para contextualizar: Tenho escrito Terraform na AWS há cerca de três anos, principalmente infraestrutura de aplicação — VPCs, ECS, RDS, ALBs, o de sempre — às vezes usando HCP Terraform, mas mais frequentemente S3 + DynamoDB. Fiz o 003 há muito tempo de forma meio desatenta e imaginei que o 004 seria uma revisão rápida. Em sua maior parte foi, mas com algumas observações.
O que estudei intensivamente e não precisei
Nos dois dias antes do exame, me aprofundei em alguns tópicos que se mostraram quase inexistentes na prova:
- Sintaxe de Sentinel e OPA. Convenci-me de que precisava reconhecer uma regra Sentinel à primeira vista. Houve exatamente uma pergunta que abordava policy-as-code, e era conceitual — "qual recurso impõe políticas organizacionais?" — respondível apenas sabendo que a palavra "Sentinel" existe.
- Versões do protocolo de plugin do provedor. Relevância zero.
- Memorizar cada subcomando
terraform state. O exame pergunta sobrestate list,state mvestate rmem cenários. Se você entender o que cada um faz em linguagem simples, não precisa memorizar as flags. - Níveis de preços do HCP Terraform. Não estavam no exame. O exame trata o HCP de forma conceitual.
Se eu tivesse o tempo de preparação de volta, o teria dedicado a mais repetições de for_each vs. count.
O que me surpreendeu
Algumas coisas que eu não esperava:
O novo conteúdo 004 é perguntado com precisão. Eu esperava perguntas superficiais como "o que o bloco moved faz?"; em vez disso, tive cenários específicos como "você renomeou um recurso e quer preservar seu estado sem interrupção — qual é a mudança mínima válida?" com opções de resposta que incluíam tanto uma invocação de state mv quanto um bloco moved. Você precisa escolher o idioma que se encaixa no fluxo de trabalho, não apenas reconhecer que ambos existem.
Múltiplas perguntas sobre blocos import vs. terraform import. Eu havia preguiçosamente assumido que eram equivalentes. O exame me lembrou que não são — o bloco é declarativo e se integra com plan; o comando CLI é imperativo e causa efeitos colaterais no estado imediatamente. Duas perguntas testaram especificamente se eu sabia qual deles se encaixa em um fluxo de trabalho de CI/CD revisável.
As perguntas de HCL são mais densas do que os testes práticos sugerem. Muitos exames práticos fornecem um trecho limpo de quatro linhas. O exame real, pelo menos uma vez, me deu um bloco de quinze linhas com um dynamic aninhado dentro de um resource cujo próprio for_each estava impulsionando a contagem externa, e me pediu para prever o número de recursos criados. Tive que ler duas vezes. Não subestime a carga cognitiva de ler HCL cuidadosamente sob um relógio de 60 segundos por questão.
Duas perguntas sobre terraform test. Quase pulei esta seção porque os testes práticos mal a mencionavam. As perguntas eram conceituais — que .tftest.hcl existe, que os blocos run contêm asserções, que você pode simular provedores para testes de unidade. Dê uma olhada rápida na página da documentação; é o suficiente.
Gerenciamento de tempo quase me pegou
57 perguntas em 60 minutos é pouco mais de um minuto por questão. Sou lento ao fazer testes de conteúdo técnico porque leio o código cuidadosamente. Terminei minha primeira passada aos 52 minutos com cinco questões marcadas para revisão. Em duas dessas perguntas marcadas, eu estava pensando demais na formulação; relendo-as com uma nova perspectiva, mudei ambas as respostas — uma acabou correta, a outra acho que mudei para a resposta errada (não há como saber depois do fato).
O que funcionou: qualquer pergunta em que me pegava relendo o enunciado mais de duas vezes, eu escolhia minha melhor suposição, a sinalizava e seguia em frente. Não fique em uma única pergunta por quatro minutos. Se você não souber depois de um minuto, provavelmente não saberá depois de mais três.
As perguntas lentas
Uma categoria específica que consumiu tempo: "dada esta saída de arquivo de estado, o que terraform plan mostrará?" Estas são lentas porque você percorre mentalmente um diff de estado. Para duas delas, desisti de tentar simular, olhei as opções de resposta e escolhi a coisa mais provável de estar quebrada (uma tag ausente em um caso, um atributo alterado no outro). Ambas se mostraram corretas. Reconhecimento de padrões em vez de simulação profunda, quando o tempo é curto.
O que eu realmente recomendaria, se estivesse refazendo minha preparação
Dado o que sei agora, aqui está o orçamento reequilibrado:
- 40% de questões práticas. Resolva-as sob pressão de tempo, e de fato interaja com as respostas erradas.
- 25% de leitura de exemplos HCL lentamente. Escreva alguns também, mas a fluência que você precisa no dia do exame é a fluência de leitura, não a de escrita.
- 15% de semântica de estado. O que está no arquivo de estado, por que o bloqueio é importante, o que os blocos
moved/removed/importresolvem. - 10% dos novos recursos 004 isoladamente — validação de variáveis, pré-condições, valores efêmeros, argumentos somente de escrita, projetos HCP,
terraform test. - 10% de todo o resto — conceitos de IaC, o propósito do Terraform, visão geral do HCP.
Um orçamento desequilibrado por design. O balde "todo o resto" consiste principalmente em coisas que você já sabe se usou Terraform por mais de alguns meses.
Coisas que eu não esperava que importassem, mas importaram
- Saber que
terraform fmtexiste e o que ele faz. Apareceu duas vezes. Uma das respostas erradas era quefmtmodifica o estado. - Sintaxe de restrições de versão do provedor. A diferença entre
~> 1.2e~> 1.2.0(o segundo é pessimista no nível de patch — mais restritivo). Acertei esta, mas havia me convencido de que não seria testada. - O que
terraform init -upgradefaz versusterraform init -reconfigure. Fui perguntado qual usar depois de alterar um bloco backend. A resposta é-reconfigure. terraform outputcom-json. Um cenário de script perguntou qual comando produz valores de saída legíveis por máquina. Trivial se você já o usou; fácil de ignorar se não.
Depois do exame
A PSI mostra uma tela de aprovação/reprovação no final (recebi o visto verde; alívio). O detalhamento completo da pontuação por domínio chega por e-mail alguns dias depois. O selo aparece na sua conta Credly assim que você o aceita. As certificações HashiCorp são válidas por dois anos, então coloque um lembrete no calendário.
O que subestimei em um exame de fornecedor é o quão exaustivos são 60 minutos de foco intenso. Não agende uma reunião depois. Cheguei em casa e encarei uma parede por uma hora.
Se você está perto da data da sua prova, faça um bloco frio do banco CertLabPro 004. Não otimize para uma pontuação alta na prática — otimize para identificar as categorias em que você é fraco enquanto ainda há tempo para corrigi-las.