0Pricing
Cloud & IT Cert Prep · Aula

Terraform no Azure

Configure o provedor AzureRM do Terraform, escreva um plano básico de infraestrutura e compreenda quando preferir o Terraform às ferramentas nativas ARM/Bicep.

Terraform no Azure é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

O que é o Terraform e por que usar o Azure?

O Terraform é uma ferramenta de Infraestrutura como Código de código aberto desenvolvida pela HashiCorp. Ao contrário do Bicep, o Terraform é independente de provedor de nuvem — uma única base de código do Terraform pode gerenciar recursos no Azure, AWS, GCP e muitos outros provedores simultaneamente. No Azure, o Terraform usa o provedor AzureRM para interagir com a API do ARM, sendo uma escolha popular para organizações com várias nuvens.

O provedor AzureRM do Terraform

O provedor AzureRM é um plugin que o Terraform baixa e usa para traduzir a configuração do Terraform em chamadas à API do ARM. Ele é mantido pela HashiCorp e pela Microsoft e é a forma oficial de gerenciar recursos do Azure com o Terraform. Configure o provedor com o ID da sua assinatura e o método de autenticação e, em seguida, execute terraform init para baixá-lo.

# main.tf — configure the AzureRM provider
terraform {
  required_providers {
    azurerm = {
      source  = 'hashicorp/azurerm'
      version = '~> 3.0'
    }
  }
}

provider 'azurerm' {
  features {}
  subscription_id = var.subscription_id
}

Estrutura de arquivos do Terraform

Um projeto típico do Terraform para Azure é dividido em vários arquivos .tf: main.tf contém as declarações de recursos, variables.tf define as variáveis de entrada, outputs.tf define os valores de saída e terraform.tfvars fornece os valores das variáveis para um ambiente específico. O Terraform carrega automaticamente todos os arquivos .tf do diretório atual, portanto, a divisão em vários arquivos serve exclusivamente para facilitar a leitura.

# variables.tf
variable 'resource_group_name' {
  description = 'Name of the resource group'
  type        = string
  default     = 'my-rg'
}

variable 'location' {
  description = 'Azure region'
  type        = string
  default     = 'eastus'
}

Declarando recursos do Azure

No Terraform, declara os recursos do Azure usando blocos resource. O tipo de bloco é resource, seguido pelo tipo de recurso do AzureRM (por exemplo, 'azurerm_resource_group') e por um nome local usado para referenciá-lo na configuração. Os nomes das propriedades no Terraform usam snake_case, em vez de camelCase ou PascalCase, usados no JSON do ARM.

# main.tf — create a resource group and storage account
resource 'azurerm_resource_group' 'main' {
  name     = var.resource_group_name
  location = var.location
}

resource 'azurerm_storage_account' 'storage' {
  name                     = 'mystorageaccount'
  resource_group_name      = azurerm_resource_group.main.name
  location                 = azurerm_resource_group.main.location
  account_tier             = 'Standard'
  account_replication_type = 'LRS'

  tags = {
    environment = 'dev'
  }
}

O fluxo de trabalho do Terraform: Init, Plan, Apply

O fluxo de trabalho principal do Terraform tem três etapas. terraform init baixa o provedor AzureRM e configura o back-end. terraform plan compara sua configuração com o estado atual e mostra um diff do que será criado, alterado ou destruído — de forma semelhante ao what-if do ARM. terraform apply executa o plano e atualiza o Azure para corresponder à sua configuração.

# Step 1: Initialise the project and download providers
terraform init

# Step 2: Preview changes (shows + create, ~ update, - destroy)
terraform plan -out=tfplan

# Step 3: Apply the plan
terraform apply tfplan

# Destroy all managed resources
terraform destroy

Estado do Terraform

O Terraform mantém um arquivo de estado (terraform.tfstate) que registra o estado atual de todos os recursos gerenciados e os associa à sua configuração. Esse arquivo permite que o Terraform detecte divergências entre o que está configurado e o que existe no Azure. Em ambientes de equipe, armazene o estado remotamente em uma conta do Azure Storage (um back-end do Terraform) para que todos os membros da equipe compartilhem o mesmo arquivo de estado.

# Configure remote state in Azure Blob Storage
terraform {
  backend 'azurerm' {
    resource_group_name  = 'tfstate-rg'
    storage_account_name = 'tfstateaccount'
    container_name       = 'tfstate'
    key                  = 'prod.terraform.tfstate'
  }
}

Autenticação no Azure com o Terraform

O Terraform oferece suporte a vários métodos de autenticação para o Azure. Durante o desenvolvimento local, use az login (autenticação da CLI do Azure) — o Terraform obtém as credenciais automaticamente. Em pipelines de CI/CD, use um Service Principal com um segredo ou certificado de cliente, transmitido por meio de variáveis de ambiente. Para agentes ou máquinas virtuais hospedados no Azure, use uma Identidade Gerenciada para obter a autenticação mais segura, sem segredos.

# Option 1: Azure CLI (local dev)
az login
terraform plan

# Option 2: Service principal via environment variables
export ARM_CLIENT_ID='00000000-0000-0000-0000-000000000000'
export ARM_CLIENT_SECRET='your-client-secret'
export ARM_SUBSCRIPTION_ID='00000000-0000-0000-0000-000000000000'
export ARM_TENANT_ID='00000000-0000-0000-0000-000000000000'
terraform plan

Módulos do Terraform para reutilização

Assim como os módulos do Bicep, os módulos do Terraform permitem empacotar e reutilizar padrões de infraestrutura. Um módulo é um diretório que contém arquivos .tf. Pode referenciá-lo com um bloco module, passar entradas por meio de variables e consumir saídas. O Terraform Registry hospeda centenas de módulos do Azure mantidos pela comunidade e verificados, que pode usar diretamente, como o módulo de rede AzureRM.

# Use a module from the Terraform Registry
module 'vnet' {
  source  = 'Azure/vnet/azurerm'
  version = '4.0.0'

  resource_group_name = azurerm_resource_group.main.name
  vnet_location       = azurerm_resource_group.main.location
  use_for_each        = true
  address_space       = ['10.0.0.0/16']
  subnet_prefixes     = ['10.0.1.0/24', '10.0.2.0/24']
  subnet_names        = ['web', 'app']
}

Quando escolher Terraform ou Bicep

Escolha o Bicep quando sua organização usar exclusivamente o Azure e quiser a integração mais estreita com os novos recursos do Azure (o Bicep recebe suporte para novos tipos de recursos desde o primeiro dia). Escolha o Terraform quando gerenciar recursos em vários provedores de nuvem, precisar do amplo ecossistema de módulos da comunidade ou preferir a sintaxe HCL e o conjunto de ferramentas da HashiCorp. Ambos são válidos para implantações exclusivamente no Azure — muitas vezes, a preferência da organização é o fator decisivo.

Importando recursos existentes

Se já existirem recursos no Azure antes de começar a usar o Terraform, poderá colocá-los sob o gerenciamento do Terraform usando terraform import. Esse comando obtém o estado atual do recurso e o adiciona ao arquivo de estado do Terraform. Depois da importação, deverá escrever manualmente o bloco de configuração correspondente para corresponder ao recurso importado e, em seguida, executar terraform plan para confirmar que não há diferenças.

# Import an existing resource group into Terraform state
terraform import \
  azurerm_resource_group.main \
  '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/existing-rg'

# Terraform 1.5+ supports import blocks in configuration
import {
  to = azurerm_resource_group.main
  id = '/subscriptions/00000000.../resourceGroups/existing-rg'
}

Boas práticas do Terraform no Azure

Siga estas boas práticas para usar o Terraform no Azure: armazene o estado remotamente no Azure Blob Storage com o bloqueio de estado habilitado; use espaços de trabalho ou arquivos de estado separados para ambientes diferentes; nunca confirme segredos no controle de código-fonte — use fontes de dados do Azure Key Vault; fixe as versões do provedor para evitar alterações incompatíveis; e execute o Terraform em um pipeline de CI/CD (Azure Pipelines ou GitHub Actions) com etapas de aprovação do plano.

Verificação rápida

Teste sua compreensão dos conceitos do Microsoft Azure Fundamentals (AZ-900) apresentados nesta lição.

Recapitulação da lição

Nesta lição, aprendeu que: o Terraform é uma ferramenta de IaC independente de provedor de nuvem que usa o provedor AzureRM para gerenciar recursos do Azure; o fluxo de trabalho init, plan, apply permite implantações seguras e previsíveis; e o estado remoto no Azure Blob Storage é essencial para a colaboração em equipe. A seguir, exploraremos a criação de planos do App Service e Web Apps.

Perguntas Frequentes

A aula “Terraform no Azure” é grátis?

Sim — o texto completo de “Terraform no Azure” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

O que vou aprender em “Terraform no Azure”?

Configure o provedor AzureRM do Terraform, escreva um plano básico de infraestrutura e compreenda quando preferir o Terraform às ferramentas nativas ARM/Bicep. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cloud & IT Cert Prep?

Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Terraform no Azure”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?

Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Como funciona o Azure Resource Manager
  2. Escrevendo Modelos ARM
  3. Bicep: IaC moderno do Azure
  4. Terraform no Azure
← Voltar para Cloud & IT Cert Prep