fbpx Terraform do Zero: Criar EC2 e Infra na AWS com Código (Guia) | Certificação Linux

Terraform no Linux: Infraestrutura como Código do Zero na AWS

📅 19/07/2026 ⏱ 4 min ✍️ Uira Ribeiro
Terraform no Linux: Infraestrutura como Código do Zero na AWS
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponível no
Google Play
Disponível na
App Store

Terraform é uma ferramenta de Infrastructure as Code (IaC) da HashiCorp que permite criar, modificar e destruir infraestrutura em nuvem usando arquivos de configuração versionáveis. Em vez de clicar no console da AWS, você descreve o que quer e o Terraform cria.

Por que usar Terraform?

  • Versionável: infraestrutura no Git, com histórico completo de mudanças
  • Reproduzível: recria o ambiente idêntico em qualquer conta/região em segundos
  • Multi-cloud: o mesmo workflow para AWS, GCP, Azure, DigitalOcean e +300 providers
  • Plan antes de aplicar: você vê exatamente o que vai mudar antes de confirmar
  • Evita drift: o estado desejado no código é a fonte da verdade

Instalação no Linux

# Ubuntu/Debian — via repositório oficial HashiCorp
wget -O- https://apt.releases.hashicorp.com/gpg |   sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg]   https://apt.releases.hashicorp.com $(lsb_release -cs) main" |   sudo tee /etc/apt/sources.list.d/hashicorp.list

sudo apt update && sudo apt install terraform -y

terraform version

Estrutura de um Projeto Terraform

projeto/
├── main.tf           # recursos principais
├── variables.tf      # declaração de variáveis
├── outputs.tf        # valores expostos após o apply
├── terraform.tfvars  # valores das variáveis (não versionar com secrets!)
└── backend.tf        # onde salvar o estado (S3, etc.)

Primeiro Recurso: EC2 na AWS

# main.tf
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = var.aws_region
}

resource "aws_instance" "web" {
  ami           = "ami-0c55b159cbfafe1f0"  # Amazon Linux 2
  instance_type = var.instance_type

  tags = {
    Name        = "meu-servidor-web"
    Environment = "producao"
    ManagedBy   = "terraform"
  }
}
# variables.tf
variable "aws_region" {
  description = "Região AWS"
  type        = string
  default     = "us-east-1"
}

variable "instance_type" {
  description = "Tipo da instância EC2"
  type        = string
  default     = "t3.micro"
}
# outputs.tf
output "instance_id" {
  value = aws_instance.web.id
}

output "instance_public_ip" {
  value = aws_instance.web.public_ip
}

O Workflow Básico

# 1. Inicializa: baixa providers e configura o backend
terraform init

# 2. Valida a sintaxe dos arquivos .tf
terraform validate

# 3. Formata o código (boa prática antes de commitar)
terraform fmt

# 4. Mostra o plano de mudanças (read-only, não altera nada)
terraform plan

# 5. Aplica as mudanças (pede confirmação)
terraform apply

# 6. Aplica sem pedir confirmação (usar em CI/CD)
terraform apply -auto-approve

# 7. Destroi toda a infraestrutura
terraform destroy

Terraform State

O Terraform mantém um arquivo terraform.tfstate que registra o estado atual da infraestrutura. Em times, esse estado deve ser armazenado remotamente para evitar conflitos:

# backend.tf
terraform {
  backend "s3" {
    bucket         = "meu-terraform-state"
    key            = "producao/terraform.tfstate"
    region         = "us-east-1"
    dynamodb_table = "terraform-lock"  # evita apply simultâneo
    encrypt        = true
  }
}

Módulos: Reutilizando Infraestrutura

Módulos são blocos reutilizáveis de infraestrutura. A comunidade já publicou centenas no registry.terraform.io:

module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "5.0.0"

  name = "minha-vpc"
  cidr = "10.0.0.0/16"

  azs             = ["us-east-1a", "us-east-1b"]
  private_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
  public_subnets  = ["10.0.101.0/24", "10.0.102.0/24"]

  enable_nat_gateway = true
  single_nat_gateway = true
}

# Referencia o output do módulo
output "vpc_id" {
  value = module.vpc.vpc_id
}

Comandos Úteis do Dia a Dia

# Ver o estado atual sem conectar à nuvem
terraform show

# Listar recursos no state
terraform state list

# Importar recurso existente para o state
terraform import aws_instance.web i-1234567890abcdef0

# Recarregar modules após alteração
terraform get -update

# Visualizar grafo de dependências
terraform graph | dot -Tsvg > grafo.svg

Terraform no Mercado

Terraform é a ferramenta de IaC mais pedida em vagas de DevOps, SRE e Cloud Engineer. A HashiCorp oferece a Terraform Associate, certificação acessível para quem tem 6 meses de prática — e que aparece com frequência crescente em job posts de vagas sênior.

A combinação LPIC-1 + Terraform + AWS é hoje o perfil mais demandado para posições de pleno/sênior em infraestrutura.

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Especialista Linux com mais de 20 anos de experiência.
Autor de 5 livros e mentor de mais de 14.000 alunos certificados.
20 certificações de alto nível, incluindo LPIC-3, CKA, RHCE e AWS Solutions Architect.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp