🚀 Creando y Gestionando Cuentas de Almacenamiento en Azure con Terraform
En esta lección se describe paso a paso cómo provisionar y gestionar cuentas de almacenamiento en Azure utilizando Terraform. El proceso incluye desde la creación inicial del recurso hasta la configuración de salidas sensibles y mejores prácticas de despliegue. A continuación, encontrarás un resumen estructurado y enriquecido con ejemplos prácticos.
📂 Concepto de Cuentas de Almacenamiento en Azure
Las cuentas de almacenamiento en Azure funcionan como una “USB gigante” o un disco duro virtual en la nube, permitiendo almacenar archivos, blobs, tablas o discos. Son un recurso esencial para casi cualquier arquitectura en la nube.
Ejemplo ilustrativo:
Imagina que quieres centralizar archivos de logs generados por aplicaciones distribuidas en varias regiones. Una cuenta de almacenamiento en Azure puede actuar como repositorio único, accesible y escalable.
🔍 Uso de la Documentación en Terraform Registry
El primer paso fue recurrir a la documentación oficial en Terraform Registry, donde se encuentran los bloques necesarios para declarar recursos.
Para este caso, se usó el recurso azurerm_storage_account.
Recomendación clave:
- Siempre inicia revisando la documentación más reciente del proveedor.
- Copia ejemplos básicos y adáptalos a tu entorno.
🛠 Preparando el Entorno en VS Code
El proceso se llevó a cabo en Visual Studio Code, creando un directorio específico (almacenamiento) y un archivo principal (main.tf).
Se reutilizó parte del código de ejercicios anteriores para acelerar el setup inicial.
Ejemplo práctico:
- Carpeta:
/terraform/almacenamiento
- Archivo:
main.tf con definición de azurerm_resource_group y azurerm_storage_account.
🌍 Definiendo Recursos y Regiones
Se eligió la región Brazil South en lugar de Central Mexico, mostrando cómo variar la ubicación de recursos para diferentes escenarios.
Buenas prácticas destacadas:
- Usar variables dinámicas en lugar de nombres estáticos.
- Permitir que Terraform gestione las dependencias entre recursos (ejemplo: primero se crea el grupo de recursos y luego la cuenta de almacenamiento).
🔑 Nombres Únicos y Restricciones
Las cuentas de almacenamiento en Azure requieren nombres únicos, de 3 a 24 caracteres y en minúsculas.
El ejemplo utilizó un nombre como amin-test-platzi.
Tips prácticos:
- Evita nombres genéricos como
storageaccount, ya que casi siempre estarán ocupados.
- Usa prefijos/sufijos relacionados con tu organización o entorno (ejemplo:
dev, test, prod).
⚙️ Ejecución de Comandos Terraform
La secuencia de comandos clave fue:
terraform init → Inicializar el entorno.
terraform plan -out plan.out → Revisar el plan de ejecución.
terraform apply → Desplegar los recursos.
Ejemplo de problema común:
Un error 404 al crear el recurso indica que el nombre elegido ya existe. La solución rápida es cambiar el nombre y volver a aplicar.
🔒 Configuración de Propiedades de Seguridad
Dentro de la cuenta de almacenamiento se ajustó la propiedad public_network_access_enabled a false, limitando el acceso público.
Recomendación:
Configura estas propiedades desde el inicio para evitar que los recursos sean desplegados con configuraciones inseguras.
📝 Outputs y Valores Sensibles
Una parte clave fue la definición de un output para exponer la connection string de la cuenta de almacenamiento.
Al tratarse de información sensible, se configuró:
Esto garantiza que:
- Terraform pueda usar la información en pipelines o scripts.
- La cadena no se muestre en texto plano en la terminal.
🧩 Explorando Propiedades y Outputs Adicionales
Más allá de la cadena de conexión, una cuenta de almacenamiento ofrece muchas propiedades útiles que se pueden exponer como outputs:
- 🌐 Ubicación (
location)
- 🔄 Tipo de replicación (
account_replication_type)
- 💾 Tipo de rendimiento (
account_tier)
Ejemplo hipotético:
Definir un output adicional con el tipo de replicación configurado (LRS, GRS, etc.) para auditar despliegues en diferentes entornos.
✅ Conclusión y Recomendaciones Finales
Este ejercicio muestra un flujo completo de trabajo con Terraform y Azure:
- Crear y organizar recursos en archivos bien estructurados.
- Aprovechar la documentación oficial del Terraform Registry.
- Asegurar nombres únicos y buenas prácticas de dependencias.
- Configurar outputs de manera segura con
sensitive = true.
- Explorar propiedades adicionales para enriquecer los outputs.
Recomendación práctica:
Experimenta con diferentes configuraciones de las cuentas de almacenamiento (replicación, accesos, niveles de rendimiento) y expón esas propiedades en tus outputs para entender mejor cómo afectan a tu infraestructura y aplicaciones.