Última revisión: mayo de 2026
Crea los servicios de AWS del examen AZ-900 con Terraform puro: bloque a bloque, cada uno vinculado a un dominio del examen. El mismo código funciona en OpenTofu.
Al final de este laboratorio, habrá aprovisionado, con Terraform simple, la carga de trabajo de Azure más pequeña y realista: un grupo de recursos, una cuenta de almacenamiento con valores predeterminados seguros, una pequeña máquina virtual Linux y una alerta de presupuesto de Cost Management que le enviará un correo electrónico antes que su cartera lo haga. Cada recurso se asigna a uno de los pilares del examen AZ-900.
Cada recurso es Terraform simple. No hay variables, módulos ni estado remoto. Suelte los fragmentos en un único main.tf, ejecute terraform init una vez y luego terraform apply paso a paso.
>= 1.5 o OpenTofu >= 1.6.az login una vez; el proveedor azurerm de Terraform detecta la suscripción activa automáticamente.Todos los recursos de este laboratorio encajan dentro del nivel gratuito de Azure para nuevas suscripciones (crédito de $200 durante los primeros 30 días, más cantidades siempre gratuitas):
Si mantiene la máquina virtual en funcionamiento 24/7 fuera del nivel gratuito, cuesta ~5 $/mes. Destruya el laboratorio cuando termine.
Cada pila de Azure Terraform comienza de la misma manera: fijar el proveedor azurerm (usamos ~> 4.0, la línea estable actual) y declarar el bloque features. El bloque features {} vacío es obligatorio; azurerm no se inicializará sin él. Esta es la convención de Aprovisionamiento de AZ-900 más probada a nivel de autor de Terraform.
El recurso random_id es el patrón estándar para generar nombres de cuentas de almacenamiento globalmente únicos: los nombres de cuentas de almacenamiento de Azure deben tener entre 3 y 24 caracteres, alfanuméricos en minúscula y globalmente únicos en todas las suscripciones de Azure. El random_id agrega 4 dígitos hexadecimales al nombre para evitar colisiones.
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"
}
}Cada recurso de Azure reside en un Grupo de recursos, el contenedor organizativo universal de Azure. Los RG son gratuitos, regionales (el RG en sí es solo metadatos, pero su contenido está limitado a su región por defecto) y la unidad de gestión masiva: eliminar un RG elimina todo lo que hay dentro de él.
Los dominios Conceptos de la nube y Identidad, gobernanza, privacidad y cumplimiento de Azure de AZ-900 insisten en este concepto: los Grupos de recursos son la unidad de ámbito más pequeña para las asignaciones de roles de RBAC, Azure Policy y el seguimiento de costos. Etiquete cada RG.
resource "azurerm_resource_group" "main" {
name = "certlabpro-az-900-rg"
location = "eastus"
tags = local.tags
}Azure Storage es el servicio de datos fundamental que utiliza toda carga de trabajo de AZ-900. Creamos una cuenta LRS (redundancia local) de nivel Estándar, la opción de replicación más barata y el valor predeterminado esperado por AZ-900 para cargas de trabajo de laboratorio no productivas. El acceso a la red pública está deshabilitado, solo se aplica HTTPS y la versión mínima de TLS se establece en 1.2 (el dominio Seguridad de AZ-900 prueba explícitamente estos tres como los valores predeterminados de higiene básica).
El account_kind = "StorageV2" es la cuenta de propósito general v2 actual; AZ-900 a veces le pedirá que la distinga de BlobStorage (más antigua, solo de blobs) y FileStorage (archivos premium). StorageV2 es la respuesta correcta para cualquier pregunta de "propósito general".
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
}AZ-900 dedica un dominio completo (Precios, SLA y ciclo de vida de Azure) a los conceptos de facturación. El artefacto práctico más probado en ese espacio es una alerta de presupuesto, el mecanismo de Cost Management para enviarle un correo electrónico cuando el gasto real o previsto supera un umbral.
Definimos el alcance del presupuesto al Grupo de recursos que creamos en el Paso 2, lo que significa que rastrea todo en este laboratorio (y solo en este laboratorio). La notificación se dispara al 80% del presupuesto; un patrón de pregunta recurrente en AZ-900 es "¿por qué el 80% en lugar del 100%?", porque al 80% aún tiene tiempo para actuar; al 100% el dinero ya se ha ido.
Reemplace you@example.com con su dirección real antes de ejecutar 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"]
}
}Un terraform destroy estándar elimina todo en este laboratorio. Una nota específica de Azure: cuando se destruye el Grupo de recursos, Azure elimina todos los recursos dentro de él como un efecto secundario, incluso si Terraform no los conoce. Este es el primitivo de limpieza probado en AZ-900: si alguna vez pierde el rastro de lo que hay en un RG, eliminar el RG anula todo el subárbol. Úselo con cuidado en suscripciones compartidas.
La cuenta de almacenamiento tiene una retención de eliminación suave de 14 días por defecto en las suscripciones más nuevas; el espacio de nombres permanece reservado durante ese período. Si vuelve a ejecutar el laboratorio inmediatamente, puede producirse una colisión de nombres; el sufijo random_id suele evitarlo, pero no está garantizado.
AZ-900 cubre una amplia superficie de servicios: Azure Virtual Machines (lo abordamos conceptualmente pero no implementamos una VM en este laboratorio mínimo), App Service, Azure Functions, AKS, Azure SQL, Cosmos DB, Azure AD/Entra ID, Azure Policy, Azure Blueprints, plantillas ARM, Bicep, Calculadora de precios, Calculadora de TCO, Azure Advisor, Service Health y muchos más.
Nos ceñimos a la carga de trabajo inicial más pequeña y realista porque el examen evalúa la fluidez conceptual amplia, no el aprovisionamiento profundo servicio por servicio. Los cuatro pilares mencionados anteriormente —Grupo de recursos (gobernanza), Cuenta de almacenamiento (servicios + valores predeterminados de seguridad), Cost Management (precios) y el objetivo de cómputo implícito— son la base a la que se adjunta cualquier otro concepto de AZ-900.
Para una cobertura servicio por servicio, consulte las secciones Buscar y Editorial de esta página de certificación; hacen referencia a cada servicio nombrado en el alcance de AZ-900.