Folha de dicas do Terraform - comandos úteis e exemplos

A lista de todos os comandos do terraform

Conteúdo da página

Aqui está um guia rápido de Terraform
com comandos essenciais, elementos de configuração, gerenciamento de recursos, módulos, variáveis, manipulação de estado e melhores práticas.

A Terraform é uma ferramenta de código de infraestrutura (IaC) de código aberto desenvolvida pela
HashiCorp,
que permite aos usuários definir e provisionar infraestrutura em múltiplos provedores de nuvem (por exemplo, AWS, Azure, GCP) usando arquivos de configuração declarativos.
Seu principal objetivo é automatizar o provisionamento da infraestrutura, garantir a consistência e reduzir erros manuais.
A Terraform suporta fluxos de trabalho multi-nuvem, modulares e baseados em estado, tornando-a uma pedra fundamental das práticas modernas de DevOps.

estudante usando terraform

Principais benefícios da Terraform:

  • Sintaxe Declarativa: Defina os estados desejados da infraestrutura em código.
  • Agnosco de Provedor: Funciona com AWS, Azure, GCP, Kubernetes e muito mais.
  • Gerenciamento de Estado: Rastreia alterações na infraestrutura para evitar conflitos.

Guia de Instalação e Configuração

https://developer.hashicorp.com/terraform/tutorials#get-started

O processo de instalação da Terraform é bastante simples.

  • Linux (Ubuntu/Debian):

    wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    sudo apt update && sudo apt install terraform
    
  • Windows (WSL):

    wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip
    unzip terraform.zip
    
  • macOS (Homebrew):

    brew install terraform
    

Verificação

terraform --version

Comandos da CLI da Terraform

Aqui está a lista de todos os comandos da Terraform:

Comando Descrição
terraform init Inicialize um novo ou diretório existente de configuração da Terraform
terraform validate Verifique se a configuração é válida
terraform plan Mostre o plano de execução sem fazer alterações
terraform apply Aplique as alterações necessárias para atingir o estado desejado
terraform destroy Destrua a infraestrutura gerenciada pela Terraform
terraform fmt Reformate os arquivos de configuração no estilo padrão
terraform show Mostre o estado atual ou o plano
terraform refresh Atualize o estado com a infraestrutura real
terraform providers Exiba os provedores usados na configuração
terraform graph Visualize as dependências de recursos como um gráfico
terraform workspace list Liste todos os workspaces disponíveis
terraform workspace new Crie um novo workspace
terraform workspace select Mude para um workspace especificado
terraform workspace show Mostre o nome do workspace atual
terraform workspace delete Exclua um workspace especificado
terraform output Mostre os valores de saída do arquivo de estado
terraform import Importe um recurso existente para a Terraform
terraform taint Marque um recurso para reconstrução na próxima aplicação
terraform untaint Desmarque um recurso como taintado
terraform state list Liste os recursos no arquivo de estado
terraform state show Mostre os atributos de um único recurso no estado

Essenciais de Configuração

Extensões de Arquivo

  • .tf: Arquivos de configuração principais (sintaxe HCL)
  • .tfvars: Valores de variáveis

Tipos de Blocos da Terraform

  • Exemplo de Provedor
    provider "aws" {
      region = "us-east-1"
    }
    
  • Exemplo de Recurso
    resource "aws_instance" "web" {
      ami           = "ami-0abcdef"
      instance_type = "t2.micro"
    }
    
  • Exemplo de Variável
    variable "instance_count" {
      type    = number
      default = 2
    }
    
  • Exemplo de Saída
    output "instance_ip" {
      value = aws_instance.web.public_ip
    }
    
  • Exemplo de Módulo
    module "vpc" {
      source = "./modules/vpc"
      cidr_block = var.vpc_cidr
    }
    

Trabalhando com Variáveis

  • Declarando variáveis
    variable "region" {
      description = "Região da AWS"
      default     = "us-east-1"
    }
    
  • Atribuindo valores
    • CLI: terraform apply -var="region=us-west-2"
    • tfvars: terraform apply -var-file="prod.tfvars"
  • Tipos: string, number, bool, list, map, object

Gerenciando Estado

  • Arquivo de estado: terraform.tfstate
  • Estado remoto (Exemplo S3)
    backend "s3" {
      bucket = "my-tf-state"
      key    = "state.tfstate"
      region = "us-east-1"
    }
    
  • Visualizar estado:
    terraform show
    terraform state list

Loops e Condicionais

  • Count
    resource "aws_instance" "web" {
      count = 3
      ...
    }
    
  • For_each
    resource "aws_s3_bucket" "b" {
      for_each = var.bucket_names
      bucket   = each.value
    }
    
  • Condicionais
    instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
    

Funções

  • Interpolação de string:
    resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
  • Exemplos de lista, mapa:
    locals {
      my_map = { a = 1, b = 2 }
    }
    

Provisionadores

Usados para provisionar recursos. Exemplo:

resource "aws_instance" "web" {
  ...
  provisioner "local-exec" {
    command = "echo Instância criada"
  }
}

Melhores Práticas

  • Controle de versão de todos os arquivos .tf
  • Bloqueie versões de provedores para garantir implantações consistentes
  • Backend remoto para gerenciamento de estado (S3, Azure Blob, etc.)
  • Criptografe arquivos de estado em backends remotos
  • Modularize a infraestrutura usando módulos reutilizáveis
  • Documente suas configurações
  • Teste em staging antes de produção

Referências Adicionais

  • Ajuda: terraform --help ou [comando] --help para ajuda específica de comando
  • Depuração: Defina TF_LOG=INFO ou TF_LOG=DEBUG para logs detalhados
  • Formatação: terraform fmt

Este guia rápido fornece uma referência de acesso rápido para os aspectos mais comuns e avançados do uso da Terraform - desde comandos até melhores práticas - tornando-o prático tanto para iniciantes quanto para usuários avançados. Tenha um ótimo dia!