Por que Usar IAC? (Infraestrutura como Código)

A Infraestrutura como Código (IAC) é uma prática revolucionária no mundo da TI que transforma a maneira como gerenciamos servidores, redes, armazenamento e outros recursos de TI. Em vez de configurar sistemas manualmente, o IAC permite que você crie, configure e gerencie recursos usando código. Isso traz inúmeros benefícios, como reprodutibilidade, automatização, colaboração em equipe e redução de erros humanos, pois o ambiente é criado de forma automatica atraves de script/codigo.

Por que o IAC é Importante?

  1. Consistência: Com código, você garante que a infraestrutura seja sempre configurada da mesma forma, evitando inconsistências entre ambientes (desenvolvimento, homologação e produção).
  2. Reprodutibilidade: Você pode replicar rapidamente ambientes completos, como clusters Kubernetes ou bases de dados, com apenas alguns comandos.
  3. Colaboração: Equipes podem revisar, testar e implantar mudanças de infraestrutura como se fossem código, usando ferramentas de versionamento como Git.
  4. Economia de tempo e custos: Automatizar tarefas repetitivas reduz erros humanos e acelera o provisionamento de recursos.
  5. Auditoria e segurança: Todo processo de configuração é documentado, facilitando a auditoria e a conformidade com normas como ISO 27001.

Ferramentas Open Source

Podemos citar alguns softwares open source que ajudam a implementar o IAC. Cada uma tem um foco específico, mas todas contribuem para a automação da infraestrutura. Podemos aliar algum desses softwares em pipelines automatizadas (vamos abordar isso em outro momento)

1. Terraform (https://developer.hashicorp.com/terraform)

  • Foco: Provisionamento de infraestrutura em nuvem (AWS, Azure, GCP, etc.).
  • Como funciona: Usa “providers” para interagir com fornecedores de nuvem e “resources” para definir recursos (como servidores, redes, bases de dados).
  • Exemplo de código para criar uma instância EC2 na AWS:
provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}

2. Ansible (https://docs.ansible.com/)

  • Foco: Automação de configuração e gerenciamento de servidores.
  • Como funciona: Usa playbooks (arquivos YAML) para definir tarefas, como instalar softwares ou configurar servidores.
  • Exemplo de código para instalar o nginx em um servidor:
- name: Instalar o Nginx
  apt:
    name: nginx
    state: present

3. Puppet (https://www.puppet.com/)

  • Foco: Gerenciamento de configuração em larga escala.
  • Como funciona: Define “manifests” (arquivos .pp) que especificam como os recursos devem estar configurados.
  • Exemplo de código para configurar o arquivo de configuração do Nginx:
file { "/etc/nginx/nginx.conf":
  ensure  => file,
  content => "server { listen 80; }",
}

4. AWS CloudFormation (https://aws.amazon.com/pt/)

  • Foco: Infraestrutura no AWS (somente para a nuvem Amazon).
  • Como funciona: Usa templates JSON ou YAML para definir recursos.
  • Exemplo de template para criar uma instância EC2 na AWS:
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "MyEC2Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "InstanceType": "t2.micro"
      }
    }
  }
}

Conclusão

Adotar IAC é uma prática essencial para equipes que desejam automatizar, escalar e manter infraestrutura de forma segura e eficiente. Ferramentas open source como Terraform, Ansible e Puppet são gratuitas, flexíveis e com comunidades ativas, o que as torna ideais para iniciantes e profissionais. Ao usar IAC, você não só ganha tempo, mas também reduz riscos e garante que sua infraestrutura seja sempre consistente e auditável.

Dica: Comece com um único projeto e, à medida que ganha confiança, expanda para outros recursos e fornecedores de nuvem!