Guía completa para crear y configurar Azure Cosmos DB con Terraform
- Daniel J. Saldaña
- 25 de junio de 2024
- Puntuación de feedback
En esta guía detallada, aprenderás a crear y configurar una cuenta de Azure Cosmos DB utilizando Terraform. Exploraremos qué es Azure Cosmos DB, sus beneficios, y cómo puedes automatizar su gestión con Terraform para lograr una infraestructura en la nube más eficiente y escalable.
¿Qué es Azure Cosmos DB?
Azure Cosmos DB es un servicio de base de datos distribuida globalmente que permite gestionar datos a gran escala con alta disponibilidad, rendimiento y consistencia. Ofrece capacidades multimodelo, incluyendo soporte para documentos, gráficos y columnas anchas, y es ideal para aplicaciones que requieren escalabilidad horizontal y baja latencia de datos.
Beneficios de Azure Cosmos DB
- Distribución Global: Replica tus datos en múltiples regiones de Azure para ofrecer alta disponibilidad y rendimiento sin la necesidad de gestión manual.
- Modelos de Consistencia: Proporciona cinco niveles de consistencia ajustables según las necesidades de tu aplicación: fuerte, obsoleto limitado, prefijo consistente, sesión y eventual.
- Escalabilidad Horizontal: Permite escalar el rendimiento y el almacenamiento de manera independiente y automática para manejar cargas variables.
- Integración Multimodelo: Soporta múltiples APIs, incluyendo SQL, MongoDB, Cassandra, Gremlin y Table, facilitando la integración con diversas aplicaciones.
- Garantía de Desempeño: Ofrece latencias de lectura y escritura garantizadas menores a 10 milisegundos, asegurando un rendimiento óptimo.
Configuración de Azure Cosmos DB con Terraform
Terraform es una herramienta de infraestructura como código (IaC) que permite definir y gestionar tu infraestructura en la nube de manera declarativa. Utilizar Terraform para configurar Azure Cosmos DB ofrece ventajas como la repetibilidad, el versionado y la automatización del despliegue.
Archivos de configuración
Para comenzar, necesitas crear tres archivos principales: main.tf
, variables.tf
y outputs.tf
.
1. main.tf
Este archivo define el proveedor de Azure y el recurso de Cosmos DB. Aquí se especifican todas las configuraciones necesarias para la cuenta de Cosmos DB.
Código del archivo main.tf
:
2. variables.tf
Este archivo define todas las variables que se utilizarán en el módulo, permitiendo personalizar la configuración del recurso de Cosmos DB según tus necesidades.
Código del archivo variables.tf
:
3. outputs.tf
Este archivo define las salidas del módulo, como el ID y el nombre de la cuenta de Cosmos DB creada, que pueden ser utilizados en otros módulos o scripts.
Código del archivo outputs.tf
:
Descripción de las variables
A continuación, se describen las principales variables utilizadas en el módulo y su propósito:
create_resource
: Indica si se debe crear el recurso de Cosmos DB (true
ofalse
).name
: Nombre del Cosmos DB account.location
: Ubicación donde se creará el Cosmos DB account.resource_group_name
: Nombre del grupo de recursos donde se creará el Cosmos DB account.offer_type
: Tipo de oferta para el Cosmos DB account (Standard
oAutoscale
).kind
: Tipo de Cosmos DB account (GlobalDocumentDB
,MongoDB
,Parse
).tags
: Mapa de etiquetas para asignar al Cosmos DB account.enable_automatic_failover
: Habilitar o deshabilitar el failover automático.is_virtual_network_filter_enabled
: Habilitar o deshabilitar el filtro de red virtual.enable_multiple_write_locations
: Habilitar o deshabilitar las ubicaciones de escritura múltiple.enable_free_tier
: Habilitar o deshabilitar la capa gratuita.minimal_tls_version
: La versión mínima de TLS para el Cosmos DB account.total_throughput_limit
: El límite total de rendimiento para el Cosmos DB account.geo_location
: La ubicación geográfica y la prioridad de failover para la cuenta de CosmosDB.capabilities_name
: El nombre de la capacidad para el Cosmos DB account.backup_type
: El tipo de copia de seguridad para el Cosmos DB account (Periodic
oContinuous
).backup_tier
: El nivel de copia de seguridad para el Cosmos DB account (Continuous7Days
,Continuous30Days
oContinuous
).consistency_policy
: El nivel de consistencia para el Cosmos DB account (Eventual
,Session
,Strong
,BoundedStaleness
oConsistentPrefix
).
Implementación del módulo
Para ejecutar este módulo, sigue estos pasos:
Inicializar Terraform:
Este comando inicializa el directorio de trabajo con los archivos de configuración de Terraform.
Previsualizar los cambios que se van a aplicar:
Este comando genera un plan de ejecución, que muestra los cambios que Terraform aplicará en tu infraestructura.
Aplicar los cambios:
Este comando aplica los cambios necesarios para alcanzar el estado deseado de la configuración descrita en los archivos de Terraform.
Salidas
Después de aplicar los cambios, Terraform te proporcionará las siguientes salidas:
cosmosdb_id
: El ID de la cuenta de Cosmos DB creada.cosmosdb_name
: El nombre de la cuenta de Cosmos DB creada.
Estas salidas pueden ser utilizadas en otros módulos o scripts para integrar la cuenta de Cosmos DB con otras partes de tu infraestructura.