O que é infraestrutura como código?
Infraestrutura como código é a prática de definir seus servidores, redes e recursos de nuvem em arquivos versionados em vez de configurá-los manualmente.
Clicar por um console de nuvem para configurar infraestrutura é lento, não repetível e impossível de revisar. Infraestrutura como código (IaC) substitui isso por arquivos que declaram exatamente o que deve existir, de modo que sua infraestrutura se torna reproduzível e revisável como software.
A ideia central
Com IaC você escreve uma descrição da infraestrutura que deseja, quantos servidores, qual rede, quais bancos de dados, em arquivos de configuração. Uma ferramenta lê esses arquivos e cria ou atualiza os recursos reais para corresponder. Os arquivos, e não o console, são a definição autoritativa do seu ambiente.
Declarativo versus imperativo
A maior parte da IaC é declarativa: você descreve o estado final desejado e a ferramenta descobre como chegar lá. Isso difere de scripts imperativos que detalham cada passo. Definições declarativas permitem que a ferramenta detecte drift e convirja o ambiente de volta ao que os arquivos dizem.
Um exemplo
Em vez de criar um servidor manualmente, um engenheiro escreve algumas linhas declarando "uma máquina virtual deste tamanho, nesta rede, com este disco." Executar a ferramenta a cria. Alterar o tamanho no arquivo e reexecutar a atualiza. Remover o bloco a exclui, tudo revisado via pull request.
Por que importa
- Reprodutibilidade: suba ambientes idênticos sob demanda.
- Controle de versão: cada mudança de infraestrutura é rastreada.
- Revisão: mudanças passam por pull requests como código.
- Recuperação de desastres: reconstrua a partir das definições.
Onde se encaixa
IaC é um pilar de DevOps e GitOps, e combina naturalmente com CI/CD: pipelines podem aplicar mudanças de infraestrutura da mesma forma que fazem o deploy de aplicações. Definir ambientes em código também é o que torna possíveis ambientes de staging e produção consistentes.
Principais conclusões
- IaC define infraestrutura em arquivos versionados, não manualmente.
- Definições declarativas permitem que ferramentas convirjam a realidade ao estado desejado.
- Ela traz reprodutibilidade, revisão e recuperação para a infraestrutura.