Infraestrutura como Código (IaC)
Introdução
Infraestrutura como Código (IaC) é um dos conceitos mais importantes dentro de DevOps e da moderna engenharia de software. Antes da IaC, a configuração de servidores e recursos de nuvem era feita manualmente, o que gerava inconsistências, erros humanos e falta de controle.
Neste módulo, você vai entender como a IaC revolucionou o provisionamento de infraestrutura e por que ela é essencial em ambientes modernos.
O que é Infraestrutura como Código
Infraestrutura como Código é uma abordagem onde a infraestrutura de TI (servidores, redes, bancos de dados, etc.) é definida e gerenciada usando arquivos de código em vez de configurações manuais ou interfaces gráficas.
Com IaC, você "escreve" sua infraestrutura da mesma forma que escreve um software: usando arquivos de texto versionáveis e automatáveis.
Explicação técnica
Antes da IaC:
- Equipes acessavam servidores via SSH
- Instalavam pacotes manualmente
- Configuravam arquivos à mão
- Não havia padrões ou reprodutibilidade
Hoje, com IaC:
- Toda a infraestrutura é descrita em arquivos declarativos
- O provisionamento é automatizado e reprodutível
- Mudanças são controladas por versionamento (Git)
- Aplicar ou destruir infraestrutura é uma questão de rodar comandos
Benefícios:
- Redução de erros manuais
- Padronização de ambientes
- Controle de versão da infraestrutura
- Escalabilidade e rapidez no deploy
Sintaxe e Comandos (exemplo genérico)
Como esta é uma introdução genérica, vamos imaginar um arquivo de infraestrutura simples em formato YAML:
server:
name: web01
image: ubuntu-22.04
cpu: 2
memory: 4GB
Em ferramentas reais como Terraform, Ansible ou Pulumi, a sintaxe muda, mas a ideia central é a mesma: definir recursos como código.
Exemplo prático
Vamos imaginar duas situações:
Antes (manual):
ssh user@192.168.1.10
sudo apt update
sudo apt install nginx
sudo systemctl enable nginx
Com IaC:
package:
name: nginx
state: present
service:
name: nginx
enabled: true
running: true
Esse YAML poderia ser interpretado por uma ferramenta como Ansible, por exemplo.
Output esperado
Com IaC:
- Provisionamento automático de servidores
- Logs com o que foi criado, alterado ou destruído
- Ambiente padronizado e reprodutível
Exemplo de log:
TASK [Install nginx] ***
ok: [web01]
TASK [Enable nginx] ***
ok: [web01]
Melhores práticas
- Sempre versionar os arquivos de IaC (Git)
- Usar ambientes separados (dev/staging/prod)
- Validar e testar os arquivos antes de aplicar
- Automatizar o pipeline de deploy de infraestrutura
- Documentar os recursos criados por código
Infraestrutura como Código é a base para times que querem agilidade, segurança e consistência na entrega de sistemas. No próximo módulo, vamos aprofundar usando o Terraform na prática.