Terraform para iniciantes

O Terraform (TF) é uma ferramenta open-source desenvolvida pela HashiCorp que permite gerenciar e provisionar infraestrutura de TI de forma automatizada. Utilizando o conceito de “infraestrutura como código” (IaC), o TF possibilita a definição, criação e alteração de recursos, como, por exemplo, servidores, redes e bancos de dados. Por meio de arquivos de configuração legíveis e versionáveis, é possível realizar todas essas operações de maneira eficiente e segura.

Imagine que você pode descrever toda a sua infraestrutura de TI em um arquivo de texto. Após escrever esse arquivo, você pode executá-lo com o TF para criar ou modificar recursos, seja em um provedor de nuvem (como AWS, Azure ou Google Cloud) ou em ambientes locais. Isso traz agilidade, padronização e controle para a gestão da infraestrutura.

Por que usar o Terraform?

Agora, você pode estar se perguntando: “Por que eu deveria usar o Terraform?” Bom, para começar, a resposta é simples: automação e consistência. Dessa forma, ao definir sua infraestrutura como código, você pode não apenas replicar ambientes facilmente, mas também corrigir erros rapidamente e garantir que diferentes times de desenvolvimento usem as mesmas configurações. Além disso, o TF oferece diversas vantagens, como:

  • Automatize a criação de infraestrutura — Nada de configurar servidores manualmente.
  • Faça versionamento — você pode armazenar as configurações em um controle de versão (como Git), facilitando o rastreamento de mudanças.
  • Gerencie múltiplos provedores de nuvem — Com uma única ferramenta, é possível gerenciar recursos em diferentes nuvens públicas e privadas.
  • Execute planos antes de aplicar mudanças — Isso permite prever as alterações antes de aplicar as mudanças, minimizando erros.

Como funciona o Terraform?

Em termos simples, o Terraform funciona gerenciando infraestrutura como código (IaC). Isso significa que, em vez de criar recursos manualmente em provedores de nuvem como AWS, Azure ou Google Cloud, você descreve a infraestrutura desejada em arquivos de configuração. Dessa forma, esses arquivos funcionam como “roteiros” que o TF segue para criar, alterar ou destruir recursos automaticamente.

Passo a passo:

  1. Escrevendo o código
    Primeiramente, você define o que deseja em arquivos de configuração usando a linguagem HCL (HashiCorp Configuration Language). Por exemplo, você pode especificar que precisa de uma máquina virtual na AWS e um banco de dados no Google Cloud.
  2. Inicializando o ambiente
    Depois disso, você executa o comando terraform init, que prepara o TF para trabalhar com os providers necessários. Nesse momento, ele baixa os plugins específicos dos provedores que você usará, como AWS ou Azure.
  3. Gerando o plano de execução
    Em seguida, o comando terraform plan exibe um plano que mostra quais recursos o TF vai criar, modificar ou destruir para atingir o estado desejado. Com isso, você pode revisar e garantir que as mudanças estão corretas antes de aplicar.
  4. Aplicando as mudanças
    Por fim, com o comando terraform apply, o TF cria ou altera a infraestrutura conforme o plano gerado. Além disso, ele registra essas mudanças em um “estado”, um arquivo que mantém o controle sobre os recursos gerenciados.
  5. Monitorando e ajustando a infraestrutura
    À medida que sua infraestrutura evolui, você pode continuar usando o Terraform para ajustar ou expandir os recursos. Caso precise destruir algum recurso, basta usar o comando terraform destroy, e o TF removerá os itens especificados.

Exemplo básico de uso

Veremos um exemplo prático. Imagine que você quer criar um servidor na AWS usando o Terraform. Para isso, você precisa escrever um arquivo de configuração como este:

provider “aws” {
    region = “us-east-1”
  }
  
  resource “aws_instance” “example” {
    ami = “ami-0c55b159cbfafe1f0”     # ID da imagem da máquina
    instance_type = “t2.micro”        # Tipo de instância
  }

Neste exemplo, estamos utilizando o provedor AWS para criar uma instância EC2. As configurações incluem a região e o tipo de instância. A seguir, você executaria os seguintes comandos no terminal:

terraform init    # Inicializa o Terraform e baixa os plugins necessários
terraform plan    # Gera o plano de execução
terraform apply   # Aplica as mudanças e provisiona a infraestrutura

Simples assim! O Terraform gerencia o ciclo de vida da infraestrutura, desde a criação até a destruição.

Componentes-chave

O TF se baseia em vários componentes e conceitos fundamentais para operar corretamente. Exploraremos alguns deles para você entender melhor como tudo funciona.

Providers

Em resumo, os providers são responsáveis por interagir com APIs de provedores de serviços (como AWS, Azure, Google Cloud) para criar, atualizar ou destruir recursos. Além disso, cada provider no TF funciona como uma espécie de “plugin” que conhece os recursos específicos daquele provedor. Alguns exemplos de providers:

Azure (provider "azurerm")
Google Cloud (provider "google")
AWS (provider "aws")
Kubernetes (provider "kubernetes")
Github (provider "github")

Resources

De modo geral, os resources são as partes da infraestrutura que o Terraform gerencia. Eles podem representar um servidor, um banco de dados, uma rede, entre outros. No caso do exemplo anterior, o aws_instance é um resource que representa uma instância EC2 na AWS.

State

O state é o arquivo onde o Terraform armazena o estado atual da infraestrutura gerenciada. Isso permite que o Terraform acompanhe os recursos que já criou e determine se precisa alterá-los ou destruí-los.

Principais comandos

Para quem está começando, entender os principais comandos do Terraform é essencial. Aqui estão os comandos mais usados:

  • terraform init: inicializa o diretório de trabalho contendo os arquivos de configuração. Também baixa os plugins necessários.
  • terraform plan: mostra o que vai criar, modificar ou destruir na infraestrutura.
  • terraform apply: aplica o plano gerado, criando ou alterando recursos conforme necessário.
  • terraform destroy: destrói todos os recursos definidos nos arquivos de configuração.

Em essência, esses comandos formam a base do fluxo de trabalho do Terraform. Com isso, você pode gerenciar facilmente sua infraestrutura e, além disso, evitar interações manuais com os provedores de nuvem.

Terraform em ambientes Multicloud

Sem dúvida, uma das grandes vantagens do Terraform é a sua capacidade de ser multicloud. Além disso, com ele, você pode orquestrar e gerenciar a infraestrutura em diferentes provedores de nuvem de forma centralizada. Por exemplo, imagine que sua empresa utiliza tanto a AWS quanto a Azure. O Terraform permite que você crie, por exemplo, máquinas virtuais em ambas as nuvens com o mesmo conjunto de arquivos de configuração, facilitando a automação e a padronização.

Aqui está um exemplo de configuração que utiliza tanto AWS quanto Azure:

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

provider "azurerm" {
  features {}
}

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

resource "azurerm_virtual_machine" "example" {

  name                  = "example-vm"
  location              = "East US"
  resource_group_name   = "example-resources"
  network_interface_ids = ["${azurerm_network_interface.example.id}"]
  vm_size               = "Standard_DS1_v2"
}

Com essa configuração, o Terraform gerenciará tanto uma instância EC2 na AWS quanto uma máquina virtual na Azure, tudo em um único fluxo de trabalho.

Conclusão

O Terraform é uma ferramenta indispensável para equipes de TI que buscam automatizar, versionar e gerenciar infraestrutura de forma eficiente e escalável. Além disso, com ele, você pode controlar todo o ciclo de vida dos seus recursos em múltiplos provedores de nuvem, garantindo consistência e segurança nas operações.

Se você ainda não utiliza o Terraform, este é o momento ideal para começar. Mesmo que a curva de aprendizado seja um pouco íngreme, os benefícios a longo prazo são imensos.

Você pode encontrar mais tutoriais, documentações, melhores práticas e casos de uso no site oficial da Hashicorp.

Você também pode gostar:

Veja também temas separados por categorias:

Deixe um comentário

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


Sou o Eduardo

Seja bem-vindo ao nosso portal, onde a tecnologia se entrelaça com a curiosidade para te levar a uma jornada empolgante!

Prepare-se para ter sua mente expandida, sua criatividade aguçada e sua sede de conhecimento saciada!