Pular para o conteúdo principal

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.