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

Como criar um Resource Group na Azure com Terraform

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

O Terraform permite criar infraestrutura na Azure de forma repetível, escrevendo o que queres em ficheiros de texto em vez de clicares no portal. Criar um Resource Group na Azure com Terraform é o primeiro passo para automatizar recursos: o grupo funciona como um "contentor" lógico que junta e organiza tudo o que vais provisionar a seguir. É também a base ideal para aprender o ciclo de trabalho do Terraform.

Pré-requisitos

  • Uma subscrição Azure ativa (chega o escalão gratuito).
  • Terraform instalado (versão 1.0 ou superior).
  • A Azure CLI instalada, para autenticação.
  • Um editor de texto (por exemplo, o VS Code).

Passo 1: Autenticar na Azure

O Terraform precisa de permissão para falar com a Azure. A forma mais simples é iniciar sessão com a Azure CLI: o Terraform reutiliza essas credenciais automaticamente. Em produção usarias antes um service principal, mas para aprender o az login é mais que suficiente.

az login
az account set --subscription "NOME_OU_ID_DA_SUBSCRICAO"

Passo 2: Criar o ficheiro de configuração

Cria uma pasta nova e, lá dentro, um ficheiro chamado main.tf. Começa por declarar o provider azurerm, que diz ao Terraform que vais trabalhar com a Azure. O bloco features {} é obrigatório, mesmo que fique vazio.

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

provider "azurerm" {
  features {}
}

Passo 3: Definir o Resource Group

Ainda no main.tf, adiciona um bloco resource do tipo azurerm_resource_group. Dá-lhe um nome interno (aqui, rg) e define o name e a location — a região onde o grupo vai viver.

resource "azurerm_resource_group" "rg" {
  name     = "rg-tutorial-bconcepts"
  location = "West Europe"
}
Dica: escolhe a location mais próxima dos teus utilizadores para reduzir a latência e, muitas vezes, o custo.

Passo 4: Inicializar o Terraform

Abre o terminal na pasta do projeto e corre terraform init. Este comando descarrega o provider azurerm e prepara a pasta de trabalho.

terraform init

Passo 5: Rever o plano e aplicar

Com terraform plan vês o que vai ser criado, sem alterar nada. Se concordares, terraform apply cria o Resource Group na Azure. Escreve yes quando for pedida confirmação. No plano, cada linha com um + representa um recurso que vai ser criado — deverás ver exatamente um.

terraform plan
terraform apply

Passo 6: Referenciar o grupo noutro recurso

A grande vantagem do Terraform é ligar recursos entre si. Para veres isto na prática, adiciona uma Storage Account que use o Resource Group criado. Repara como resource_group_name e location apontam para o bloco anterior, em vez de repetires os valores à mão.

resource "azurerm_storage_account" "sa" {
  name                     = "stbconcepts0706"
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = azurerm_resource_group.rg.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
}

output "storage_account_url" {
  value = azurerm_storage_account.sa.primary_blob_endpoint
}

Se voltares a correr terraform apply, o Terraform cria apenas o novo recurso e mostra o output no fim. O nome da Storage Account tem de ser único a nível global e só pode ter letras minúsculas e números.

Verificar o resultado

Confirma que o grupo foi criado de duas formas. No terminal, usa a Azure CLI; no portal, procura por "Resource groups". Se o nome aparecer, correu tudo bem. Podes também abrir o ficheiro terraform.tfstate, onde o Terraform guarda o estado atual da tua infraestrutura.

az group show --name "rg-tutorial-bconcepts" --output table

Conclusão

Em poucos passos passaste de uma pasta vazia para infraestrutura real na Azure, definida como código e fácil de repetir. Quando já não precisares dos recursos, corre terraform destroy para os apagar e evitar custos. Qual vai ser o próximo recurso a entrar no teu main.tf — uma rede virtual ou uma base de dados?