DEV Community

Cover image for Instalando o Terraform no Debian 12 (Bookworm)
Luis Cruz
Luis Cruz

Posted on • Edited on

Instalando o Terraform no Debian 12 (Bookworm)

O Terraform é a principal ferramenta de infraestrutura como código (IaC) do mercado, desenvolvida pela HashiCorp. Com ele você descreve sua infraestrutura em arquivos .tf e aplica mudanças de forma previsível e rastreável em dezenas de providers — AWS, Azure, GCP, Docker e muito mais.

Neste artigo você vai instalar o Terraform no Debian 12 (Bookworm) a partir do repositório oficial da HashiCorp e validar a instalação com um exemplo prático: subir um container NGINX com Docker gerenciado pelo Terraform.

Segurança: sempre verifique a impressão digital (fingerprint) da chave GPG antes de adicionar repositórios externos. O passo de verificação está incluído abaixo.


Pré-requisitos

Atualize o sistema e instale as dependências necessárias:

sudo apt-get update
sudo apt-get install -y gnupg ca-certificates lsb-release wget curl
Enter fullscreen mode Exit fullscreen mode
  • gnupg e ca-certificates — verificação de assinaturas GPG
  • lsb-release — obtém o codinome da distribuição de forma confiável

1. Adicionar o repositório oficial da HashiCorp

Baixe e registre a chave GPG no formato esperado pelo APT:

wget -O- https://apt.releases.hashicorp.com/gpg | \
  sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
Enter fullscreen mode Exit fullscreen mode

Adicione o repositório usando o codinome da sua distro e a arquitetura detectadas automaticamente:

CODENAME=$(lsb_release -cs 2>/dev/null || grep -oP '(?<=VERSION_CODENAME=).*' /etc/os-release)
ARCH=$(dpkg --print-architecture)
echo "deb [arch=${ARCH} signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
  https://apt.releases.hashicorp.com ${CODENAME} main" | \
  sudo tee /etc/apt/sources.list.d/hashicorp.list
Enter fullscreen mode Exit fullscreen mode

O lsb_release -cs é a fonte principal; o grep no /etc/os-release é o fallback caso lsb-release não esteja disponível.


2. Instalar o Terraform

sudo apt-get update
sudo apt-get install -y terraform
Enter fullscreen mode Exit fullscreen mode

Confirme a versão instalada:

terraform -version
Enter fullscreen mode Exit fullscreen mode

Saída esperada (versão pode variar):

Terraform v1.10.x
on linux_amd64
Enter fullscreen mode Exit fullscreen mode

Para instalar uma versão específica, use sudo apt-get install -y terraform=1.9.8-1 ou baixe o binário diretamente em releases.hashicorp.com.


3. Verificar a chave GPG (fingerprint)

Confirme que a chave instalada corresponde à publicada pela HashiCorp:

gpg --no-default-keyring \
  --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \
  --fingerprint
Enter fullscreen mode Exit fullscreen mode

Compare o fingerprint retornado com o valor oficial publicado em hashicorp.com/security. Se não bater, remova o keyring e refaça o processo.


4. Exemplo prático: Terraform + Docker + NGINX

Vamos provisionar um container NGINX via Terraform para validar a instalação.

Pré-requisitos do exemplo

  • Docker instalado e em execução
  • Usuário com permissão no socket Docker: sudo usermod -aG docker $USER (relogin necessário)

Estrutura do projeto

mkdir -p ~/learn-terraform-docker-container
cd ~/learn-terraform-docker-container
Enter fullscreen mode Exit fullscreen mode

Crie o arquivo main.tf:

nano main.tf
Enter fullscreen mode Exit fullscreen mode

Arquivo main.tf

terraform {
  required_version = ">= 1.5.0"
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 3.6"
    }
  }
}

provider "docker" {
  host = "unix:///var/run/docker.sock"
}

resource "docker_image" "nginx" {
  name         = "nginx:latest"
  keep_locally = false
}

resource "docker_container" "nginx" {
  image = docker_image.nginx.image_id
  name  = "tutorial-nginx"

  ports {
    internal = 80
    external = 8000
  }
}
Enter fullscreen mode Exit fullscreen mode

Fluxo de execução

1. Inicializar — baixa o provider Docker e cria o terraform.lock.hcl:

terraform init
Enter fullscreen mode Exit fullscreen mode

2. Formatar e validar — garante que o código está correto antes de aplicar:

terraform fmt
terraform validate
Enter fullscreen mode Exit fullscreen mode

3. Planejar — visualize o que será criado sem aplicar nada:

terraform plan
Enter fullscreen mode Exit fullscreen mode

4. Aplicar — cria os recursos. Confirme digitando yes quando solicitado:

terraform apply
Enter fullscreen mode Exit fullscreen mode

Verificar

Acesse http://localhost:8000 no navegador ou via curl:

curl -s -o /dev/null -w "%{http_code}" http://localhost:8000
# esperado: 200
Enter fullscreen mode Exit fullscreen mode

Liste o container criado:

docker ps --filter name=tutorial-nginx
Enter fullscreen mode Exit fullscreen mode

Destruir os recursos

Quando terminar, remova tudo o que o Terraform criou:

terraform destroy
Enter fullscreen mode Exit fullscreen mode

Confirme com yes. Em pipelines automatizados, use --auto-approve com cautela, nunca em produção sem controles adicionais.


Referência rápida dos comandos

Comando O que faz
terraform init Inicializa o projeto e baixa providers
terraform fmt Formata os arquivos .tf
terraform validate Valida sintaxe e configurações
terraform plan Mostra o que será criado/alterado/destruído
terraform apply Aplica as mudanças
terraform destroy Remove todos os recursos gerenciados

Boas práticas

  • Trave versões: use required_version e version nos required_providers para evitar quebras por atualização automática
  • Commit do lock file: versione o terraform.lock.hcl para garantir builds reproduzíveis no time
  • Nunca suba segredos em .tf: use variáveis de ambiente, terraform.tfvars (fora do git) ou HashiCorp Vault
  • Planeje antes de aplicar: em produção, sempre use terraform plan -out=tfplan e revise antes de terraform apply tfplan
  • Verifique fingerprints GPG ao adicionar novos repositórios

Referências

Top comments (0)