(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como importar recursos Azure para o Terraform: passo a passo

João Barros 05 de July de 2026 4 min de leitura

Adotar o Terraform num ambiente Azure que já tem recursos criados manualmente é um desafio comum: não queremos apagar nada, apenas passar a gerir o que já existe. Importar recursos Azure para o Terraform resolve isso — coloca a infraestrutura atual sob controlo de código sem a recriar. Este guia mostra, passo a passo, como usar o comando terraform import para trazer um resource group existente para o estado do Terraform de forma segura.

Pré-requisitos

  • Terraform instalado (versão 1.5 ou superior recomendada).
  • Azure CLI instalado e sessão iniciada com az login.
  • Permissões de leitura sobre a subscrição e os recursos a importar.
  • Uma pasta vazia para o projeto e um editor de texto à tua escolha.

Passo 1: Preparar o provider e autenticar

Cria um ficheiro main.tf e declara o provider azurerm. Para aprender, a forma mais simples de autenticar é reutilizar a sessão da Azure CLI, por isso confirma primeiro que estás na subscrição certa.

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 4.0"
    }
  }
}

provider "azurerm" {
  features {}
}

No terminal, seleciona a subscrição e inicializa o projeto:

az account set --subscription "NOME-OU-ID-DA-SUBSCRICAO"
terraform init

Passo 2: Declarar o bloco do recurso

O terraform import não gera código: ele associa um recurso real a um bloco que já tem de existir na tua configuração. Por isso, declara primeiro o recurso, mesmo que só com os atributos essenciais. Vamos usar um resource group chamado rg-producao.

resource "azurerm_resource_group" "producao" {
  name     = "rg-producao"
  location = "westeurope"
}

Os valores de name e location têm de corresponder exactamente ao recurso que já existe na Azure, senão o Terraform vai propor recriá-lo.

Passo 3: Obter o ID do recurso na Azure

Cada recurso na Azure tem um identificador único. Para o resource group, obtém-lo com a Azure CLI:

az group show --name rg-producao --query id --output tsv

O resultado tem este formato, e é ele que vais usar no passo seguinte:

/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-producao

Passo 4: Executar o terraform import

Agora liga o endereço do recurso no código (azurerm_resource_group.producao) ao ID real que obtiveste. O endereço é o "nome interno" no Terraform; o ID é a referência na Azure.

terraform import azurerm_resource_group.producao "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-producao"

Se tudo correr bem, aparece a mensagem Import successful!. O recurso passa a existir no ficheiro de estado (terraform.tfstate), embora o teu código ainda possa estar incompleto.

Dica: o estado pode guardar valores sensíveis em texto simples. Usa sempre um backend remoto seguro (por exemplo, uma conta de armazenamento na Azure) em projetos reais.

Passo 5: Validar com terraform plan

Corre um plan para comparar o teu código com o estado que acabaste de importar:

terraform plan

O objetivo é o plan não propor alterações. Se propuser, é sinal de que faltam atributos no teu bloco (tags, por exemplo) ou de que algum valor difere do real. Ajusta o código e repete o plan até ficar limpo — assim garantes que o Terraform não vai modificar nem recriar o recurso sem querer.

Verificar o resultado

Confirma que o recurso está mesmo sob gestão do Terraform com dois comandos:

terraform state list
terraform state show azurerm_resource_group.producao

O primeiro deve listar azurerm_resource_group.producao; o segundo mostra todos os atributos guardados no estado. Quando o terraform plan devolver No changes. Your infrastructure matches the configuration., a importação está concluída com sucesso.

Conclusão

Seguiste o fluxo completo: declarar o bloco, obter o ID, importar e validar com plan. A partir daqui podes trazer para o Terraform toda a infraestrutura que foi criada à mão, sem o risco de a recriar. Para importar vários recursos de uma vez, experimenta os blocos import declarativos (disponíveis desde o Terraform 1.5), que até geram configuração com terraform plan -generate-config-out=gerado.tf. Qual vai ser o primeiro recurso da tua subscrição a entrar no Terraform?