Sobes.tech
Junior

O que é Infrastructure as Code (IaC)?

sobes.tech IA

Resposta da IA

A Infraestrutura como Código (IaC) é uma metodologia de gestão e provisionamento de infraestrutura (servidores, redes, armazenamento de dados, etc.) através de ficheiros de configuração ou scripts, em vez de manualmente. Isto permite automatizar processos de implantação, escalonamento e gestão, aplicando práticas de desenvolvimento de software como controlo de versões, testes e integração/entrega contínua (CI/CD).

Princípios básicos do IaC:

  • Idempotência: A aplicação do mesmo script várias vezes deve conduzir ao mesmo estado final, independentemente do estado inicial.
  • Versionamento: O código de infraestrutura é armazenado num sistema de controlo de versões (por exemplo, Git), permitindo rastrear alterações, reverter a versões anteriores e colaborar em configurações.
  • Automatização: Os processos de implantação e gestão estão totalmente automatizados, reduzindo a probabilidade de erros humanos.
  • Colaboração: Diferentes equipas podem colaborar na gestão da infraestrutura, usando repositórios e processos comuns.

Vantagens do IaC:

  • Aceleração da implantação: Criação e configuração rápida de novos ambientes.
  • Redução de erros: A automação elimina erros manuais de configuração.
  • Melhoria da coerência: Garante a mesma configuração em ambientes (desenvolvimento, testes, produção).
  • Redução de custos: Automação de tarefas rotineiras e otimização do uso de recursos.
  • Aumento da fiabilidade: Capacidade de reverter facilmente para uma configuração funcional anterior em caso de problemas.

Ferramentas populares de IaC:

  • Provisioning: Terraform, CloudFormation
  • Gestão de configuração: Ansible, Chef, Puppet, SaltStack

Exemplo de abordagem declarativa (Terraform):

// Criação de uma máquina virtual na AWS
resource "aws_instance" "example" {
  ami           = "ami-0abcdef1234567890" // ID da imagem AMI
  instance_type = "t2.micro"             // Tipo de instância
  tags = {
    Name = "ExampleInstance"
  }
}

Exemplo de abordagem imperativa (Ansible):

# Criação de um ficheiro no servidor
- name: Criar um ficheiro
  file:
    path: /tmp/my_file.txt
    state: present
    mode: '0644'

O IaC é um componente chave das práticas DevOps, permitindo gerir de forma eficiente infraestruturas complexas na cloud e localmente.