Terraform é uma ferramenta open source desenvolvida pela HashiCorp para provisionar e gerenciar infraestrutura como código (IaC – Infrastructure as Code). Com ele, você descreve toda a sua infraestrutura em arquivos de configuração, em vez de criar recursos manualmente em painéis ou consoles de nuvem.
O grande diferencial é que o Terraform funciona de forma declarativa: você descreve o estado desejado e a ferramenta se encarrega de aplicar as mudanças necessárias para que sua infraestrutura chegue até lá. Além disso, ele suporta vários provedores (AWS, Azure, Google Cloud, Kubernetes, entre outros) em um único fluxo.
Por que usar
- Automação: elimina configurações manuais e repetitivas.
- Reprodutibilidade: fácil replicar ambientes (dev, staging, produção).
- Controle de versão: arquivos podem ser versionados no Git.
- Multi-cloud: gerencia diferentes provedores em um mesmo projeto.
Principais comandos
terraform init
: inicializa o diretório de trabalho e baixa os provedores necessários.terraform plan
: mostra o que será criado, alterado ou destruído.terraform apply
: aplica as mudanças, criando ou modificando recursos.terraform destroy
: remove toda a infraestrutura definida nos arquivos.terraform fmt
: formata os arquivos.tf
de forma padronizada.
Exemplo de código
Abaixo, um exemplo simples para criar uma instância EC2 na AWS:
provider "aws" {
region = "us-east-1"
}
# Criando um bucket S3
resource "aws_s3_bucket" "meu_bucket" {
bucket = "meu-bucket-exemplo-terraform"
acl = "private"
tags = {
Name = "BucketExemplo"
Ambiente = "Dev"
}
}
# Habilitando versionamento no bucket
resource "aws_s3_bucket_versioning" "versioning" {
bucket = aws_s3_bucket.meu_bucket.id
versioning_configuration {
status = "Enabled"
}
}
Como executar:
- Salve o código em um arquivo
main.tf
. - Rode
terraform init
. - Em seguida,
terraform plan
para visualizar. - E por fim,
terraform apply
para criar a instância.
Terraform se tornou uma das ferramentas mais importantes no dia a dia de DevOps e desenvolvedores que lidam com cloud. Ele reduz erros, acelera entregas e garante maior consistência entre ambientes.