Específicos · Infraestrutura em TI
IaC: declarativo × imperativo, idempotência, imutável, Terraform (plan/apply, state)
Se o ambiente ainda precisa de um ajuste manual depois que o código rodou, não é IaC — a promessa do modelo é justamente que não sobre nada para a mão.
Altíssima15 itens no tópico
A ideia que organiza o assunto
Todo ambiente administrado à mão tende ao mesmo fim: o servidor que ninguém sabe recriar. Ele foi instalado há cinco anos, recebeu ajustes de três pessoas diferentes, e a única documentação do que há dentro dele é ele mesmo. Quando cai, não se restaura — reconstrói-se por tentativa e erro.
A infraestrutura como código responde com uma troca simples e radical: o ambiente deixa de ser um lugar e passa a ser um arquivo. Rede, sub-rede, balanceador, máquina virtual, regra de firewall e serviço são descritos em arquivos de definição legíveis por máquina, e é a execução desses arquivos que cria o ambiente — não a configuração de hardware físico, não a ferramenta interativa, não o comando digitado por alguém às duas da manhã.
Tudo o mais é consequência. Se o ambiente é arquivo, ele entra no controle de versão, com histórico, revisão por pares e retorno a um estado anterior conhecido. Se ele é criado por execução, é reproduzível: o mesmo código produz o mesmo ambiente em desenvolvimento, homologação e produção. E se reconstruir é barato, a infraestrutura se torna imutável — não se remenda a máquina, troca-se a máquina. Guardado esse encadeamento, quase todo item do tópico se responde sem decorar ferramenta.
Por que se usa (e o que custa)
Ganha-se reprodutibilidade, velocidade e auditoria no mesmo movimento: o ambiente inteiro sobe por execução de código, sem tarefa manual a cada implantação, e cada alteração fica registrada no repositório com autor, data e justificativa.
Paga-se em especialização. O modelo declarativo entrega o como à ferramenta, e isso exige alguém que domine essa ferramenta: a linguagem própria, o arquivo de estado, o comportamento de cada provedor e o que acontece quando o plano diverge da realidade. A dificuldade não desaparece — sai do comando manual e vira conhecimento concentrado. Essa é, aliás, a resposta que a banca já cobrou: a principal desvantagem da abordagem declarativa é precisar de administrador qualificado para configurar e gerenciar a solução.
Como funciona
Declarativo × imperativo. Na abordagem declarativa (também chamada funcional), escreve-se o estado final: três máquinas deste tipo, nesta sub-rede, atrás deste balanceador. A ferramenta compara o que foi declarado com o que existe e calcula sozinha o que criar, alterar ou destruir, e em que ordem. Na imperativa, escreve-se o caminho: os comandos específicos, na sequência apropriada, até chegar ao resultado. O primeiro modelo responde o quê; o segundo, como.
Idempotência. É a propriedade que torna o modelo utilizável: executar o mesmo arquivo dez vezes produz o mesmo resultado de executá-lo uma vez, porque a ferramenta só age sobre o que está diferente do declarado. Sem isso, reexecutar seria perigoso, e a automação viraria um roteiro de uso único. Registre, porém, que nenhum item medido deste tópico usa a palavra: ela está aqui porque sustenta o declarativo e pode ser cobrada amanhã, não porque já tenha decidido item algum.
Provisionar × configurar. São duas camadas do mesmo problema, e cada ferramenta mora em uma. O Terraform (ou o CloudFormation, na AWS) cria os recursos — máquinas, redes, balanceadores. O Ansible, o Puppet e o Chef configuram o que passa a existir dentro deles — pacotes, serviços, arquivos, usuários. Por serem funções diferentes, elas se encadeiam: é o arranjo mais comum do mercado, não uma incompatibilidade.
Provisionadores. Depois de criar um recurso, o Terraform pode rodar scripts dentro dele. O transporte segue o sistema operacional do destino: SSH para Linux, WinRM para Windows.
A esteira. IaC não é CI/CD, mas vive dentro dela: o arquivo de
infraestrutura é versionado como qualquer código e aplicado por uma esteira
automatizada. No GitLab, essa esteira é descrita no .gitlab-ci.yml, que por
padrão fica na raiz do repositório e pode ser editado pelo editor de pipeline.
O que decide os itens
Declarativo × imperativo — o par que a banca mais troca de lugar:
| declarativo (funcional) | imperativo (procedural) | |
|---|---|---|
| o que se escreve | o estado final desejado | os comandos, na ordem apropriada |
| quem decide o caminho | a ferramenta | quem escreveu |
| palavras típicas | propriedades, estado, desejado | passos, sequência, comandos, ordem |
| exemplos | Terraform, CloudFormation, manifesto Kubernetes | script de shell, comandos de CLI |
Imutável × mutável — o objetivo da IaC é infraestrutura imutável: não se altera o servidor existente, cria-se um novo a partir do código e substitui-se o antigo. Mutável descreve a administração manual que o modelo veio aposentar.
Quem faz o quê:
| ferramenta | papel |
|---|---|
| Terraform, CloudFormation | provisionamento de recursos, declarativo |
| Ansible, Puppet, Chef | gerência de configuração dentro da máquina |
| GitLab CI, Jenkins | esteira que executa e valida |
| Git | controle de versão do que descreve o ambiente |
IaC × integração contínua × entrega contínua — a IaC descreve o ambiente; a integração contínua integra o trabalho com frequência e automatiza construção, teste e validação a cada commit; a entrega contínua leva o artefato validado adiante. São camadas distintas da mesma esteira.
A definição canônica — cai quase palavra por palavra e costuma vir correta: gerenciar e provisionar data centers por meio de arquivos de definição legíveis por máquina, em vez de configuração de hardware físico ou de ferramentas de configuração interativas.
Como a CEBRASPE derruba você aqui
Medido sobre os 15 itens do tópico: 8 Certo e 7 Errado. Sete itens errados não produzem distribuição, e não há percentual honesto a extrair de uma base assim — o que vale é contar e nomear a forma. Contados, eles se dividem de um jeito que muda o modo de estudar: cinco dos sete se decidem sem que se conheça ferramenta nenhuma, e dois se decidem por um detalhe de ferramenta que nenhum conceito deduz.
Antes das famílias, duas advertências que a medição impõe. O tópico não é só IaC: dois dos quinze itens tratam de integração contínua e do editor de esteira do GitLab, e entraram aqui porque o enunciado juntava IaC, integração contínua e Terraform no mesmo bloco. E a idempotência, que dá nome ao tópico, não decide nenhum item — a palavra não aparece em item algum do corpus. Quem faz o trabalho dela nas provas é outro par: imutável × mutável.
Devolver o trabalho que o modelo existe para eliminar — 3 dos 7, a família dominante. Os três itens são a mesma jogada em três disfarces. O ajuste manual que sobreviveria à automação: “ainda é preciso fazer ajustes no gerenciamento de servidores e sistemas operacionais quando uma aplicação é criada ou implantada”. O servidor remendado, promovido a objetivo: “o principal objetivo (…) é implantar uma infraestrutura mutável, dinâmica”. E o passo a passo, assinado com o nome do modelo que o dispensa: a abordagem declarativa que seria “focada no modo como a infraestrutura deve ser alterada, definindo comandos específicos que devem ser executados, na ordem apropriada”. Nos três, o que a frase reintroduz é exatamente aquilo que a IaC foi criada para aposentar — a mão no servidor, a máquina que se altera no lugar, a sequência de comandos. A defesa é uma pergunta só: o que o item descreve é o mundo antes da IaC? Se for, é errado, qualquer que seja o rótulo. Ela vale, em particular, para as expressões ainda é preciso, apesar de e mesmo assim, que nos três casos introduzem a sobra manual.
O detalhe de ferramenta escondido num item conceitual — 2 dos 7. São os dois
itens que não se resolvem por raciocínio, e por isso precisam ser decorados. O
provisionamento por shell do Terraform que se conectaria “usando-se a ferramenta
WinRM” — é SSH; WinRM é o lado Windows. E o .gitlab-ci.yml que estaria “na
pasta de configuração do repositório” — fica na raiz. Guarde os dois pares:
SSH/WinRM por sistema operacional, e arquivo de esteira na raiz do
repositório.
A definição tomada de outro assunto — 1 dos 7. “A IaC é uma forma de disponibilizar códigos-fontes de atualização em código aberto para o usuário final” — o objeto está trocado: o objeto da IaC é a infraestrutura, e quem a consome é quem opera o ambiente, não o usuário final da aplicação. Ao julgar definição de sigla, confira o objeto antes do verbo.
Premissa verdadeira, conclusão oposta — 1 dos 7. “O Terraform e o Ansible possuem funcionalidades diferentes e, por esse motivo, não podem ser usados em conjunto” — a diferença de função é justamente o que os torna complementares. Sempre que o item oferecer um por esse motivo, julgue a causa e a conclusão separadamente.
E o aviso inverso, que a contagem sustenta: a definição genérica costuma estar certa. Sete dos oito itens Certos são definição pura, sem número e sem absoluto. A definição canônica — gerenciar e provisionar data centers por arquivos de definição legíveis por máquina, em vez de configuração manual — apareceu duas vezes, em concursos diferentes e com um ano de distância, quase palavra por palavra, e foi Certo nas duas. Não procure pegadinha no item curto e conceitual: neste tópico a banca erra pelo detalhe técnico trocado, não pela afirmação vaga.
Erros clássicos
Confundir IaC com CI/CD. IaC descreve o ambiente; a esteira executa e valida mudanças. Um item que faça a IaC compilar e testar código está trocando as camadas.
Achar que declarativo significa “sem ordem”. A ordem existe — quem a calcula é a ferramenta, a partir das dependências entre os recursos declarados.
Ler idempotência como “executar uma vez só”. É o contrário: é poder executar quantas vezes quiser, com o mesmo resultado, porque só o que estiver diferente do declarado será alterado.
Misturar provisionamento com gerência de configuração. Criar a máquina e configurar o que roda dentro dela são papéis distintos, e quase sempre de ferramentas distintas.
Reduzir IaC a criar máquinas virtuais. Rede, sub-rede, balanceador, firewall e serviço gerenciado entram no mesmo código, com as dependências resolvidas pela ferramenta.
LidoPraticado