Cloud

Simplificando a Gestão de Infraestrutura como Código na AWS com Terraform

Pessoa programando em ambiente de desenvolvimento com múltiplas telas, representando a automação de infraestrutura com Terraform na AWS.

Conteúdo

A agilidade e a escalabilidade são pilares em qualquer ambiente de TI moderno. No universo da nuvem, especialmente na AWS, gerenciar recursos de maneira manual pode se tornar um gargalo, levando a erros, inconsistências e lentidão. É aqui que entra o conceito de Infraestrutura como Código (IaC), e o Terraform se destaca como uma ferramenta fundamental para resolver esses desafios.

Neste artigo, exploro como o Terraform simplifica a gestão da sua infraestrutura AWS, permitindo que você defina, provisione e gerencie seus recursos de forma eficiente, repetível e segura.

O desafio da gestão manual de uma infraestrutura em nuvem

Gerenciar ambientes de nuvem em constante evolução de forma manual é insustentável. Isso frequentemente resulta em:

  • Inconsistência de ambiente: dificuldade em garantir que os ambientes de desenvolvimento, homologação e produção sejam idênticos.
  • Erros humanos: configurações manuais são propensas a falhas e esquecimentos.
  • Lentidão no provisionamento: atrasos significativos para disponibilizar novos recursos ou ambientes inteiros.
  • Falta de auditoria e versionamento: dificuldade em rastrear quem fez o quê e quando, e de reverter mudanças.

O que é Infraestrutura como Código (IaC)?

Infraestrutura como Código (IaC) é a prática de gerenciar e provisionar infraestrutura de tecnologia através de arquivos de código, ao invés do processo manual. Basicamente, sua infraestrutura (servidores, redes, bancos de dados) é tratado como software.

Os principais benefícios da IaC incluem:

  • Repetibilidade e consistência: garante que os ambientes sejam sempre provisionados da mesma forma.
  • Automação: elimina tarefas manuais, acelerando o provisionamento e a gestão.
  • Versionamento: permite usar sistemas de controle de versão (como Git) para gerenciar as mudanças na infraestrutura.
  • Colaboração: facilita o trabalho em equipe na gestão da infraestrutura.

Porque Terraform…

Entre as diversas ferramentas de IaC, o Terraform da Hashicorp se destaca por:

  • Ter uma abordagem declarativa: você descreve o estado desejado da sua infraestrutura (o que você quer que exista), e o Terraform se encarrega de planejar e executar as ações necessárias para atingir esse estado.
  • Dispor de um plano de execução: antes de aplicar qualquer mudança, o comando terraform plan gera um plano detalhado de todas as ações que serão realizadas. Isso permite uma revisão completa e a prevenção de surpresas indesejadas.
  • Modularidade e reusabilidade: o Terraform incentiva a criação de módulos reutilizáveis. Isso significa que você pode empacotar configurações complexas e reutilizá-las em diferentes projetos ou ambientes, promovendo a padronização e a eficiência.
  • Ecossistema amplo: embora meu foco seja a AWS, o Terraform suporta uma vasta gama de provedores (Azure, Google Cloud (GCP), Kubernets, etc.), tornando-o uma ferramenta versátil para ambientes multi-cloud ou híbridos.

Como começar com Terraform na AWS (primeiros passos)

Veja como é simples começar a usar o Terraform para provisionar recursos básicos na AWS.

Instalação

Primeiro de tudo, você precisará instalar o Terraform na sua máquina. Para isso, acesse a documentação oficial (aqui) para poder baixar a versão mais atualizada e seguir o passo a passo correto para o seu sistema.

Nota: para quem usa Windows assim como eu, uma forma muito simples de instalar o Terraform é por meio do gerenciador de pacotes Chocolatey, usando o comando:

PS C:\Users\user> choco install terraform

Configuração das credenciais AWS

Para que o Terraform possa interagir com sua conta AWS e criar/gerenciar recursos, ele precisa de credenciais de acesso. Siga o passo a passo a baixo para criá-las e adicioná-las à sua máquina.

Criar usuário do IAM e credencial de acesso

Tela inicial do Painel IAM da AWS.
Tela inicial do painel IAM da AWS, utilize a opção “Usuários” na navegação do console para iniciar a configuração das credenciais.

No Painel IAM da sua conta AWS, crie um novo usuário (é particularmente importante ter um usuário próprio configurado para esta interação).

  • Acesse Usuários na navegação do console.
  • Na tela de usuários, clique no botão Criar usuário, e nas telas seguintes:
    • Defina um nome para o seu novo usuário, por exemplo: terraformLocal;
    • Defina as permissões de acesso, no meu caso, usei SystemAdministrator acessando a opção “Anexar políticas diretamente”;
    • Você terá a opção de adicionar tags adicionais para o seu usuário e finalizar a criação, retornado para a tela de usuários.
  • Novamente na tela de usuário agora, clique sobre o nome do seu novo usuário para acessar os detalhes dele.
    • Utilize a aba Credenciais de segurança e na seção Chaves de acesso (0) clique em Criar chave de acesso.
    • Na tela que abrir, utilize a opção Command Line Interface (CLI) (você precisara marcar a caixa de seleção).
    • Na tela seguinte, você adicionará um nome descritivo para a chave, algo como “Acesso local do Terraform“;
    • As novas credenciais de acesso serão apresentadas, copie elas para um local reservado e conclua.

Configuração da credencial de acesso no sistema

Para que o Terraform possa interagir com sua conta AWS e criar/gerenciar recursos, ele precisa das credenciais de acesso. Existem algumas formas de configurar isso, mas as mais comuns são:

  • Variáveis de ambiente: é o método mais simples para uso local e rápido. Você configura suas chaves de acesso diretamente no terminal:
export AWS_ACCESS_KEY_ID="SUA_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="SUA_SECRET_ACCESS_KEY"
export AWS_DEFAULT_REGION="SUA_REGIAO"
  • Arquivo de Credenciais Compartilhado (~/.aws/credentials): este é o método mais recomendado para máquinas de desenvolvimento. Para quem utiliza o AWS CLI, ele é bem familiar. O Terraform, assim como o AWS CLI, buscará as credenciais neste arquivo.
    • Crie ou edite o arquivo ~/.aws/credentials (no Linux/macOS) ou C:\Users\SEU_USUARIO.aws\credentials (no Windows) com o seguinte formato:
[default]
aws_access_key_id = SUA_ACCESS_KEY_ID
aws_secret_access_key = SUA_SECRET_ACCESS_KEY

Para o perfil padrão ([default]), o Terraform usará essas credenciais automaticamente. Você pode criar perfis nomeados e especificar qual usar no bloco provider.

Para ambientes de produção ou uso em servidores/pipelines CI/CD, a forma mais segura é configurar um IAM Role para a instância EC2 (ou outro serviço) que executa o Terraform. Dessa forma, as credenciais não precisam ser armazenadas explicitamente, pois a instância assume um perfil com as permissões necessárias.

Configuração do provedor AWS no Terraform

Crie um arquivo .tf (ex: main.tf) e defina o provedor AWS. Se você usou variáveis de ambiente ou o perfil [default] no arquivo de credenciais, o Terraform o encontrará automaticamente. Caso contrário, você pode especificar o perfil:

provider "aws" {
region = "us-east-1" # Ou a região de sua preferência
# profile = "seu_perfil_aws" # Apenas se estiver usando um perfil nomeado no ~/.aws/credentials
}

Provisionando um recurso simples (Instância EC2)

Dentro do mesmo arquivo, vamos definir uma instância EC2 básica:

provider "aws" {
region = "us-east-1"
}

resource "aws_instance" "exemplo_servidor" {
ami = "ami-0abcdef1234567890" # Usar uma AMI válida para sua região
instance_type = "t2.micro"
tags = {
Name = "MeuServidorTerraform"
}
}

Nota: substitua ami-0abcdef1234567890 por uma AMI válida para a região AWS que você escolheu. Você pode encontrar AMIs no console da AWS ao tentar lançar uma instância.

Como ficou meu arquivo:

Comandos Essenciais

terraform init: inicializa o diretório de trabalho, baixando os plugins do provedor AWS.

terraform plan: gera e mostra um plano de execução, detalhando o que o Terraform fará (criar, modificar ou destruir recursos) sem aplicar as mudanças.

terraform apply: executa as ações definidas no plano, provisionando ou modificando sua infraestrutura na AWS. Confirme com “yesquando solicitado.

terraform destroy: destrói todos os recursos gerenciados pelo seu arquivo Terraform. Use com extrema cautela em ambientes de produção!

Usando a sequência de comandos acima, você deve chegar a um resultado como o que apresento na imagem abaixo.

Tela de listagem das instâncias EC2 na AWS, após a execução do comando terraform apply.
Após a execução do comando terraform apply, sua nova instância EC2 estará em execução.

Boas Práticas e Dicas para o Uso de Terraform na AWS

Para maximizar os benefícios do Terraform e manter sua infraestrutura organizada:

  • Modularização: divida seu código em módulos lógicos e reutilizáveis (ex: um módulo para redes, outro para servidores, outro para bancos de dados). Isso melhora a organização, reusabilidade e manutenibilidade do código.
  • Versionamento do estado (Terraform State): o Terraform mantém um arquivo de estado que mapeia seus recursos reais na nuvem. É crucial armazenar esse estado em um local seguro e compartilhado, como um bucket S3, idealmente com bloqueio de estado (via DynamoDB) para evitar conflitos em equipes.
  • Uso de variáveis e outputs: utilize variáveis para parametrizar seu código (ex: tamanho da instância, nome do ambiente) e outputs para exportar informações importantes (ex: IPs de instâncias). Isso torna seu código mais flexível e dinâmico.
  • Integração CI/CD: integre o Terraform em seu pipeline de Continuous Integration/Continuous Delivery (CI/CD). Isso automatiza o processo de validação, planejamento e aplicação das mudanças na infraestrutura, garantindo consistência e agilidade na entrega.
  • Segurança e gerenciamento de credenciais: nunca armazene credenciais de acesso diretamente no código. Utilize ferramentas como AWS Secrets Manager, HashiCorp Vault ou variáveis de ambiente para gerenciar segredos de forma segura.

Conclusão

O Terraform é uma ferramenta indispensável no arsenal de qualquer DevOps Engineer ou AWS Cloud Architect. Ao adotar a Infraestrutura como Código, você não apenas automatiza o provisionamento de recursos, mas também ganha em consistência, segurança, colaboração e, acima de tudo, agilidade.

A gestão manual de infraestrutura é um risco que seu negócio não pode correr no cenário atual. Com o Terraform, você tem o poder de definir, replicar e gerenciar ambientes complexos na AWS de forma programática, liberando tempo para focar em inovação e na entrega de valor.

Compartilhe este conteúdo:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Mais Artigos
Mais Artigos

Artigos Relacionados

Logo Branca - aamaguelniski

Antonio Augusto | DevOps Engineer | AWS Cloud Especialist | DBA | Linux

Apaixonado por tecnologia, profissional DevOps e especialista em AWS Cloud. Dedicado a construir soluções que simplificam o desenvolvimento e impulsionam projetos.

 

Vamos Trabalhar juntos
Vamos Trabalhar juntos
Vamos manter contato