Inicio rápido: Creación de una base de datos y un contenedor de Azure Cosmos DB mediante Terraform
SE APLICA A: NoSQL
Azure Cosmos DB es la base de datos NoSQL rápida de Microsoft con API abiertas para cualquier escala. Puede usar Azure Cosmos DB para crear y consultar rápidamente las bases de datos de grafos, documentos y de claves y valores. Puede configurar una cuenta gratuita de Azure Cosmos DB de prueba sin una tarjeta de crédito o una suscripción de Azure. Este inicio rápido se centra en el proceso de implementación mediante Terraform para crear una base de datos de Azure Cosmos y un contenedor en ella. Posteriormente, puede almacenar datos en este contenedor.
Requisitos previos
Una suscripción a Azure o una cuenta de evaluación gratuita de Azure Cosmos DB
- Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Terraform debe instalarse en la máquina local. Aquí encontrará más instrucciones.
Revisión del archivo de Terraform
Los archivos de Terraform que se usan en este inicio rápido se encuentran en el repositorio de ejemplos de Terraform. Cree los tres archivos siguientes: providers.tf, main.tf y variables.tf. Las variables se pueden establecer en la línea de comandos o con un archivo terraforms.tfvars.
Archivo de Terraform del proveedor
terraform {
required_version = ">= 1.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = ">= 3.0, < 4.0"
}
random = {
source = "hashicorp/random"
version = ">= 3.0"
}
}
}
provider "azurerm" {
features {}
}
Archivo principal de Terraform
resource "azurerm_resource_group" "example" {
name = "${random_pet.prefix.id}-rg"
location = var.location
}
resource "azurerm_cosmosdb_account" "example" {
name = "${random_pet.prefix.id}-cosmosdb"
location = var.cosmosdb_account_location
resource_group_name = azurerm_resource_group.example.name
offer_type = "Standard"
kind = "GlobalDocumentDB"
enable_automatic_failover = false
geo_location {
location = var.location
failover_priority = 0
}
consistency_policy {
consistency_level = "BoundedStaleness"
max_interval_in_seconds = 300
max_staleness_prefix = 100000
}
depends_on = [
azurerm_resource_group.example
]
}
resource "azurerm_cosmosdb_sql_database" "main" {
name = "${random_pet.prefix.id}-sqldb"
resource_group_name = azurerm_resource_group.example.name
account_name = azurerm_cosmosdb_account.example.name
throughput = var.throughput
}
resource "azurerm_cosmosdb_sql_container" "example" {
name = "${random_pet.prefix.id}-sql-container"
resource_group_name = azurerm_resource_group.example.name
account_name = azurerm_cosmosdb_account.example.name
database_name = azurerm_cosmosdb_sql_database.main.name
partition_key_path = "/definition/id"
partition_key_version = 1
throughput = var.throughput
indexing_policy {
indexing_mode = "consistent"
included_path {
path = "/*"
}
included_path {
path = "/included/?"
}
excluded_path {
path = "/excluded/?"
}
}
unique_key {
paths = ["/definition/idlong", "/definition/idshort"]
}
}
resource "random_pet" "prefix" {
prefix = var.prefix
length = 1
}
Archivo de Terraform de variables
variable "prefix" {
type = string
default = "cosmosdb-manualscale"
description = "Prefix of the resource name"
}
variable "location" {
type = string
default = "eastus"
description = "Resource group location"
}
variable "cosmosdb_account_location" {
type = string
default = "eastus"
description = "Cosmos db account location"
}
variable "throughput" {
type = number
default = 400
description = "Cosmos db database throughput"
validation {
condition = var.throughput >= 400 && var.throughput <= 1000000
error_message = "Cosmos db manual throughput should be equal to or greater than 400 and less than or equal to 1000000."
}
validation {
condition = var.throughput % 100 == 0
error_message = "Cosmos db throughput should be in increments of 100."
}
}
En el archivo de Terraform principal se definen tres recursos de Cosmos DB.
Microsoft.DocumentDB/databaseAccounts: Creación de una cuenta de Azure Cosmos.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: Creación de una base de datos de Azure Cosmos.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: Creación de un contenedor de Azure Cosmos.
Implementación mediante Terraform
- Guarde los archivos de Terraform como main.tf, variables.tf y providers.tf en la máquina local.
- Inicio de sesión en el terminal mediante la CLI de Azure o PowerShell
- Implementación mediante comandos de Terraform
- terraform init
- terraform plan
- terraform apply
Validación de la implementación
Use los Azure Portal, CLI de Azure o Azure PowerShell para enumerar los recursos implementados en el grupo de recursos.
az resource list --resource-group "your resource group name"
Limpieza de recursos
Si planea seguir trabajando en otros inicios rápidos y tutoriales, considere la posibilidad de dejar estos recursos activos. Cuando ya no los necesite, use Azure Portal, la CLI de Azure o Azure PowerShell para eliminar el grupo de recursos y sus recursos.
az group delete --name "your resource group name"
Pasos siguientes
En este inicio rápido ha creado una cuenta de Azure Cosmos, una base de datos y un contenedor mediante Terraform y ha validado la implementación. Para más información sobre Azure Cosmos DB y Terraform, continúe con los artículos siguientes.
- Lea una introducción a Azure Cosmos DB.
- Más información sobre Terraform.
- Más información sobre el proveedor de Azure Terraform.
- Administración de Cosmos DB con Terraform
- ¿Intenta planear la capacidad de una migración a Azure Cosmos DB? Para ello, puede usar información sobre el clúster de bases de datos existente.
- Si lo único que sabe es el número de núcleos virtuales y servidores del clúster de bases de datos, lea este artículo sobre cómo calcular las unidades de solicitud usando núcleos virtuales o vCPU.
- Si conoce las tasas de solicitudes típicas de la carga de trabajo de base de datos actual, lea sobre la estimación de unidades de solicitud mediante la herramienta de planeamiento de capacidad de Azure Cosmos DB.