Última revisão: maio de 2026
Construa os serviços da AWS do exame AZ-900 com Terraform puro — um bloco de cada vez, cada um vinculado a um domínio do exame. O mesmo código funciona no OpenTofu.
Ao final deste laboratório, você terá provisionado, com Terraform simples, a menor carga de trabalho inicial realista do Azure — um Grupo de Recursos, uma Conta de Armazenamento com padrões seguros, uma pequena VM Linux e um alerta de orçamento do Gerenciamento de Custos que envia um e-mail antes que sua carteira o faça. Cada recurso mapeia para um dos pilares do exame AZ-900.
Cada recurso é Terraform puro. Não há variáveis, módulos ou estado remoto. Coloque os trechos em um único main.tf, execute terraform init uma vez e, em seguida, terraform apply passo a passo.
>= 1.5 ou OpenTofu >= 1.6.az login uma vez; o provedor azurerm do Terraform detecta a assinatura ativa automaticamente.Todos os recursos neste laboratório se encaixam no nível gratuito do Azure para novas assinaturas (crédito de $200 para os primeiros 30 dias, mais valores sempre gratuitos):
Se você mantiver a VM em execução 24 horas por dia, 7 dias por semana, fora do nível gratuito, ela custará cerca de US$ 5/mês. Destrua o laboratório quando terminar.
Toda pilha Terraform do Azure começa da mesma forma: fixe o provedor azurerm (usamos ~> 4.0, a linha estável atual) e declare o bloco features. O bloco features {} vazio é obrigatório — o azurerm não será inicializado sem ele. Esta é a convenção de Provisionamento mais testada do AZ-900 no nível do autor do Terraform.
O recurso random_id é o padrão para gerar nomes de contas de armazenamento globalmente únicos — os nomes de contas de armazenamento do Azure devem ter de 3 a 24 caracteres, ser alfanuméricos em minúsculas e globalmente únicos em todas as assinaturas do Azure. O random_id adiciona 4 dígitos hexadecimais ao nome para evitar colisões.
terraform {
required_version = ">= 1.5"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 4.0"
}
random = {
source = "hashicorp/random"
version = "~> 3.6"
}
}
}
provider "azurerm" {
features {}
}
resource "random_id" "suffix" {
byte_length = 2
}
locals {
tags = {
Project = "certlabpro-az-900"
ManagedBy = "terraform"
}
}Todo recurso do Azure reside em um Grupo de Recursos — o contêiner organizacional universal do Azure. Os RGs são gratuitos, regionais (o próprio RG é apenas metadados, mas seu conteúdo é padronizado para sua região) e a unidade de gerenciamento em massa: excluir um RG exclui tudo dentro dele.
Os domínios Conceitos de Nuvem e Identidade, Governança, Privacidade, Conformidade do Azure do AZ-900 enfatizam este conceito — Grupos de Recursos são a menor unidade de escopo para atribuições de função RBAC, Azure Policy e rastreamento de custos. Etiquete cada RG.
resource "azurerm_resource_group" "main" {
name = "certlabpro-az-900-rg"
location = "eastus"
tags = local.tags
}O Azure Storage é o serviço de dados fundamental que toda carga de trabalho do AZ-900 utiliza. Criamos uma conta LRS (redundância local) de nível Standard — a opção de replicação mais barata e o padrão esperado pelo AZ-900 para cargas de trabalho de laboratório não-produção. O acesso à rede pública é desativado, o HTTPS-only é imposto e a versão mínima do TLS é definida como 1.2 (o domínio Segurança do AZ-900 testa explicitamente essas três como os padrões de higiene básica).
O account_kind = "StorageV2" é a conta de uso geral v2 atual; o AZ-900 às vezes pedirá para você distingui-la de BlobStorage (mais antiga, apenas blob) e FileStorage (arquivos premium). StorageV2 é a resposta certa para qualquer pergunta de "uso geral".
resource "azurerm_storage_account" "main" {
name = "certlabpro${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = "Standard"
account_replication_type = "LRS"
account_kind = "StorageV2"
https_traffic_only_enabled = true
min_tls_version = "TLS1_2"
public_network_access_enabled = false
allow_nested_items_to_be_public = false
tags = local.tags
}O AZ-900 dedica um domínio inteiro (Preços, SLAs e Ciclo de Vida do Azure) aos conceitos de faturamento. O artefato prático mais testado nesse espaço é um alerta de orçamento — o mecanismo do Gerenciamento de Custos para enviar e-mails quando o gasto real ou previsto ultrapassa um limite.
Delimitamos o orçamento ao Grupo de Recursos que criamos na Etapa 2, o que significa que ele rastreia tudo neste laboratório (e somente neste laboratório). A notificação é acionada em 80% do orçamento — um padrão de pergunta recorrente no AZ-900 é "por que 80% em vez de 100%?" — porque em 80% você ainda tem tempo para agir; em 100% o dinheiro já se foi.
Substitua you@example.com pelo seu endereço real antes de executar terraform apply.
resource "azurerm_consumption_budget_resource_group" "main" {
name = "certlabpro-az-900-budget"
resource_group_id = azurerm_resource_group.main.id
amount = 10
time_grain = "Monthly"
time_period {
start_date = "2026-06-01T00:00:00Z"
}
notification {
enabled = true
threshold = 80
operator = "GreaterThan"
threshold_type = "Actual"
contact_emails = ["you@example.com"]
}
}Um terraform destroy padrão derruba tudo neste laboratório. Uma nota específica do Azure: ao destruir o Grupo de Recursos, o Azure remove todos os recursos dentro dele como um efeito colateral — mesmo que o Terraform não os conheça. Este é o primitivo de limpeza testado no AZ-900: se você perder o controle do que está em um RG, a exclusão do RG elimina toda a subárvore. Use-o com cuidado em assinaturas compartilhadas.
A conta de armazenamento tem uma retenção de exclusão suave de 14 dias por padrão em assinaturas mais recentes; o namespace permanece reservado durante esse período. Se você executar o laboratório novamente imediatamente, poderá haver uma colisão de nomes — o sufixo random_id geralmente evita isso, mas não é garantido.
O AZ-900 abrange uma vasta gama de serviços — Máquinas Virtuais do Azure (abordamos este conceito, mas não implantamos uma VM neste laboratório mínimo), App Service, Azure Functions, AKS, Azure SQL, Cosmos DB, Azure AD/Entra ID, Azure Policy, Azure Blueprints, modelos ARM, Bicep, Calculadora de Preços, Calculadora de TCO, Azure Advisor, Service Health e muitos mais.
Nós nos limitamos à menor carga de trabalho inicial realista porque o exame testa a fluência conceitual ampla, não o provisionamento aprofundado serviço por serviço. Os quatro pilares abordados acima — Grupo de Recursos (governança), Conta de Armazenamento (serviços + padrões de segurança), Gerenciamento de Custos (preços) e o alvo de computação implícito — são a base para todos os outros conceitos do AZ-900.
Para cobertura serviço por serviço, consulte as seções Navegar e Editorial desta página de certificação — elas fazem referência a cada serviço nomeado no escopo do AZ-900.