DEV Community

Cover image for Instalando o Terraform
Luis Cruz
Luis Cruz

Posted on • Edited on

Instalando o Terraform

O Terraform é uma ferramenta de infraestrutura como código (IaC) desenvolvida pela HashiCorp. Ele permite descrever, provisionar e gerenciar recursos de infraestrutura de forma declarativa e versionada, facilitando automação, padronização e colaboração entre times de desenvolvimento e operações. Nesta série de artigos iremos demonstrar usos em ambientes cloud e on-premise; este primeiro post descreve a instalação do Terraform em Debian 12 "bookworm" e um exemplo prático usando o provider Docker para subir um contêiner NGINX.

Observação de segurança: siga as etapas de verificação da chave GPG e compare fingerprints com as fontes oficiais antes de confiar em repositórios externos.

Para mais informações, ou dúvidas consulte a documentação oficial.

Pré-requisitos

Execute os comandos abaixo para garantir que pacotes essenciais estejam instalados:

sudo apt-get update
Enter fullscreen mode Exit fullscreen mode
sudo apt-get install -y gnupg ca-certificates lsb-release wget curl
Enter fullscreen mode Exit fullscreen mode
  • gnupg e ca-certificates são necessários para verificar assinaturas.

  • lsb-release fornece o codinome da distribuição de forma robusta.

Instalação da chave GPG e adição do repositório oficial HashiCorp

Baixe e grave a chave em um keyring dedicado com o formato correto:

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

Este método grava a chave no formato esperado pelo APT.

Obtenha o codinome da release e a arquitetura de forma segura e adicione o repositório:

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

Esse procedimento usa lsb_release como principal fonte e faz um fallback quando necessário.

Atualize o cache APT:

sudo apt-get update
Enter fullscreen mode Exit fullscreen mode

Instalação do Terraform

Após adicionar o repositório HashiCorp:

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

Verifique a versão instalada:

terraform -version
Enter fullscreen mode Exit fullscreen mode

Se preferir uma versão específica, considere baixar o binário oficial ou usar o repositório de releases.

Verificação da impressão digital da chave (fingerprint)

Confirme a impressão digital do keyring recém-criado:

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

Compare o valor retornado com o fingerprint publicado pela HashiCorp nas páginas oficiais de empacotamento / repositório antes de prosseguir.

Exemplo prático: Terraform + Docker + NGINX

Pré-requisitos do exemplo

  • Docker instalado e funcionando no host.
  • Usuário com permissão para acessar o socket do Docker (ex.: membro do grupo docker) ou configuração de host remoto.
  • Observe que o provider Docker do Terraform comunica-se com o daemon Docker via socket unix ou TCP

Estrutura do projeto

Crie o diretório de trabalho e o arquivo 'main.tf':

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

Arquivo main.tf

nano/vim main.tf
Enter fullscreen mode Exit fullscreen mode
terraform {
  required_version = ">= 1.5.0"
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 3.6.0"   # ajuste conforme versão estável disponível no Registry
    }
  }
}

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

Inicializar e aplicar

Siga a sequência recomendada:

terraform init
Enter fullscreen mode Exit fullscreen mode
terraform fmt
Enter fullscreen mode Exit fullscreen mode
terraform validate
Enter fullscreen mode Exit fullscreen mode
terraform plan -out=tfplan
Enter fullscreen mode Exit fullscreen mode
terraform apply tfplan
Enter fullscreen mode Exit fullscreen mode

ou

terraform apply
Enter fullscreen mode Exit fullscreen mode

confirme digitando "yes" quando solicitado.

terraform init baixa providers e cria o arquivo terraform.lock.hcl. Recomenda-se commitar esse lockfile para reprodutibilidade em equipe e CI.

Verificação

Acesse http://localhost:8000 no navegador para verificar o NGINX (ou use curl).

nginx_localhost

Liste containers Docker:

docker ps -a
Enter fullscreen mode Exit fullscreen mode

Destruir recursos

Para remover o contêiner:

terraform destroy
Enter fullscreen mode Exit fullscreen mode

confirme com "yes" quando solicitado.

Em scripts automatizados, -auto-approve pode ser usado com cautela.

Fluxo recomendado e comandos úteis

  • terraform init - preparar o diretório e baixar providers.

  • terraform fmt - formata o HCL.

  • terraform validate - valida a sintaxe e configurações.

  • terraform plan - mostra mudanças previstas; grave o plano em CI com -out.

  • terraform apply - aplica mudanças.

  • terraform destroy - destrói recursos.

Boas práticas de versionamento, segurança e CI

  • Trave versões: use required_version e version nos required_providers.

  • Commit do terraform.lock.hcl para reprodutibilidade.

  • Evite inserir segredos em arquivos .tf. Use variáveis, Vault, ou mecanismos seguros de CI para secrets.

  • Em pipelines CI, evite -auto-approve em ambientes de produção sem controles adicionais.

  • Audite fingerprints de chaves GPG ao adicionar repositórios.

Referências

Guia oficial de empacotamento e instalação HashiCorp (instruções apt, GPG).
Documentação de instalação do Terraform (Downloads e instruções).
Tutorial oficial Terraform com Docker - exemplos de provider.
Registry Terraform - provider kreuzwerker/docker (verificar versão mais recente).
Repositório GitHub do provider Docker (código, releases e changelog).


Top comments (0)