Cómo desplegar infraestructura en Azure con Terraform, siempre me ha apasionado la automatización y la eficiencia en la gestión de infraestructura en la nube. Por eso, quiero compartir contigo, explicándote desde cero y con un enfoque muy práctico. Terraform, como herramienta de Infrastructure as Code (IaC), cambia por completo la manera en la que administramos recursos en la nube, brindando control, reproducibilidad y seguridad. Esta guía va mucho más allá de lo básico que suele encontrarse, combinando un lenguaje accesible con ejemplos reales que he utilizado personalmente, y consejos para que no solo entiendas el proceso, sino que puedas aplicarlo con éxito en tus propios proyectos.
¿Por qué elegir Terraform para administrar infraestructura en Azure?
Cómo desplegar infraestructura en Azure con Terraform, antes de comenzar, te comparto por qué durante años he utilizado Terraform como mi herramienta favorita para desplegar infraestructura en Azure y otras nubes:
- Declarativo y reproducible: defines el estado deseado de tu infraestructura y Terraform se encarga de crearlo y mantenerlo.
- Control de versiones: como tus configuraciones son archivos de texto (en HashiCorp Configuration Language – HCL), puedes versionarlos fácilmente con Git.
- Proveedor oficial de Azure: Terraform está plenamente integrado con Azure, permitiendo gestionar más de 400 recursos distintos.
- Automatización y colaboración: ideal para equipos que usan pipelines CI/CD.
Así que si tu objetivo es evitar configuraciones manuales que consumen tiempo y generan errores, Terraform es el mejor aliado.
Requisitos previos esenciales de cómo desplegar infraestructura en Azure con Terraform

Cómo desplegar infraestructura en Azure con Terraform, antes de entrar en materia, asegúrate de tener configurados y listos los siguientes puntos para que la experiencia sea fluida:
- Cuenta Azure activa: con permisos suficientes para crear recursos.
- Terraform instalado en tu equipo local. Puedes seguir la guía oficial de instalación.
- Azure CLI instalado y configurado para autenticación. Guía oficial aquí.
- Editor de código recomendado: Visual Studio Code, por su integración con Terraform y Azure.
Como recomendación personal, trabajo siempre en un entorno de desarrollo aislado, como una carpeta específica para mis proyectos Terraform para evitar mezclas.
Paso 1: Autenticación en Azure con Azure CLI
Si eres nuevo en Azure CLI, simplemente abre tu terminal y ejecuta:
az login
🔴 ¿Quieres entrar de lleno al mundo DevOps & Cloud Computing? 🔴
Descubre el DevOps & Cloud Computing Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en DevOps & Cloud Computing por una semanaEsto abrirá tu navegador para validar credenciales. En mi experiencia, siempre prefiero usar un service principal para automatizaciones y despliegues en pipelines. Para crear uno, puedes hacer:
az ad sp create-for-rbac –name «TerraformSP» –role=»Contributor» –scopes=»/subscriptions/<SUBSCRIPTION_ID>»
Luego, exporta las credenciales en tu entorno o configúralas en Terraform. Esto garantiza seguridad y control.
Paso 2: Inicializa tu proyecto y crea el fichero principal
En un directorio limpio, crea un archivo llamado main.tf
. Este será el corazón donde definirás todos los recursos. Comienzo siempre por definir el proveedor y un recurso básico, por ejemplo, un grupo de recursos y una red virtual.
terraform {
required_providers {
azurerm = {
source = «hashicorp/azurerm»
version = «~> 3.0»
}
}
required_version = «>= 1.0.0»
}
provider «azurerm» {
features {}
}
resource «azurerm_resource_group» «example» {
name = «rg-terraform-demo»
location = «East US»
}
resource «azurerm_virtual_network» «vnet» {
name = «vnet-terraform-demo»
address_space = [«10.0.0.0/16»]
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
}
resource «azurerm_subnet» «subnet» {
name = «subnet-terraform-demo»
resource_group_name = azurerm_resource_group.example.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = [«10.0.1.0/24»]
}
Con esta configuración, tienes ya un grupo de recursos con una red virtual y subred listas para ampliar a más recursos.
Paso 3: Manejo práctico de variables y outputs para flexibilidad
Para que tus configuraciones sean reutilizables, adopta variables para valores que probablemente cambien. Por ejemplo, en un archivo variables.tf
:
variable «resource_group_name» {
type = string
default = «rg-terraform-demo»
}
variable «location» {
type = string
default = «East US»
}
Y actualiza main.tf
para utilizar esas variables:
resource «azurerm_resource_group» «example» {
name = var.resource_group_name
location = var.location
}
Una práctica que recomiendo en cada proyecto es también definir outputs en outputs.tf
, para mostrar información útil tras el despliegue:
output «resource_group_name» {
description = «Nombre del grupo de recursos creado»
value = azurerm_resource_group.example.name
}
Esta modularidad evitará que tengas que editar valores duros repetidamente y facilitará la integración automática.
Paso 4: Inicializa y valida tu configuración
Ahora, en tu terminal, posiciona en el directorio de tu proyecto y ejecuta:
terraform init
Este comando descargará todos los plugins necesarios. Luego, es ideal validar que todo está correcto con:
terraform validate
terraform plan
El resultado de terraform plan
te mostrará un desglose claro de los cambios que se harán en Azure sin aplicarlos aún.
Paso 5: Aplica y despliega la infraestructura
Para finalmente crear los recursos en Azure, ejecuta:
terraform apply
Te pedirá confirmación. Al escribir yes
, Terraform realizará el despliegue. Durante este paso, guardará un archivo terraform.tfstate
, que es vital: contiene el estado actual de la infraestructura y evita inconsistencias.
Te recomiendo hacer respaldos frecuentes y configurar backends remotos para ambientes colaborativos, que veremos en otro artículo.
Paso 6: Comprobar y validar en el portal de Azure
Tras finalizar el despliegue, abre el portal de Azure. Verás el grupo de recursos y la red virtual creados exactamente como definiste. He encontrado que usar la consola web mientras aprendes ayuda mucho a entender qué hace cada bloque de Terraform.
Paso 7: Añade recursos y gestiona cambios
Terraform es poderoso porque permite iterar. Supongamos que ahora quieres crear una máquina virtual que se conecte a la red que definiste. Solo tienes que agregar una sección nueva en main.tf
, por ejemplo:
resource «azurerm_network_interface» «nic» {
name = «nic-terraform-demo»
location = var.location
resource_group_name = var.resource_group_name
ip_configuration {
name = «internal»
subnet_id = azurerm_subnet.subnet.id
private_ip_address_allocation = «Dynamic»
}
}
resource «azurerm_linux_virtual_machine» «vm» {
name = «vm-terraform-demo»
resource_group_name = var.resource_group_name
location = var.location
size = «Standard_B1s»
admin_username = «azureuser»
network_interface_ids = [
azurerm_network_interface.nic.id,
]
admin_ssh_key {
username = «azureuser»
public_key = file(«~/.ssh/id_rsa.pub»)
}
os_disk {
caching = «ReadWrite»
storage_account_type = «Standard_LRS»
}
source_image_reference {
publisher = «Canonical»
offer = «UbuntuServer»
sku = «20_04-lts»
version = «latest»
}
}
Luego, repite terraform plan
y terraform apply
para actualizar la infraestructura sin pérdida de datos.
Paso 8: Destruye la infraestructura cuando ya no la necesites
Para ahorrar costos o comenzar proyectos nuevos, recuerda que:
terraform destroy
Elimina todos los recursos creados por Terraform de forma segura.
Cómo desplegar infraestructura en Azure con Terraform consejos probados y trucos
- Mantén el estado bien protegido: usa Azure Blob Storage como backend remoto para que el archivo
terraform.tfstate
esté seguro y sincronizado cuando trabajas en equipo. - Modulariza tu código: crea módulos para reutilizar configuraciones comunes, como redes o máquinas virtuales.
- Usa workspaces para gestionar ambientes: desarrollo, pruebas y producción con configuraciones aisladas pero sincronizadas.
- Automatiza despliegues con pipelines CI/CD: integra Terraform en Azure DevOps, GitHub Actions o Jenkins para actualizaciones automáticas.
- Documenta TODO siempre: para que otros (y tú en el futuro) entiendan tus configuraciones fácilmente.
- No olvides la seguridad: almacena credenciales con cuidado y evita hardcodear secretos en el código.
Conclusión
Si quieres profundizar en cómo desplegar infraestructura en Azure con Terraform y en estas tecnologías para estar preparado para liderar esta transformación, te invito a conocer el Bootcamp DevOps & Cloud Computing de KeepCoding.

Cómo desplegar infraestructura en Azure con Terraform, dominar cómo desplegar infraestructura en Azure usando Terraform paso a paso no solo mejora tu productividad, sino que transforma la manera en la que tú y tu equipo gestionan la nube. En mi experiencia, las ventajas de reproducibilidad, control y automatización son invaluables para cualquier empresa o proyecto.
Este artículo sobre cómo desplegar infraestructura en Azure con Terraformes, fruto de mi experiencia real gestionando infraestructuras para proyectos empresariales que requieren escalabilidad, seguridad y rapidez. La práctica constante y el aprendizaje continuo hacen la diferencia. ¡Espero que esta guía te ayude a dar tus primeros pasos o consolidar tu conocimiento en Terraform y Azure! Te recomiendo visitar la documentación oficial del proveedor de Azure para Terraform, que está constantemente actualizada: Terraform Azure Provider Docs.