Compartir a través de


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

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.

Implementación mediante Terraform

  1. Guarde los archivos de Terraform como main.tf, variables.tf y providers.tf en la máquina local.
  2. Inicio de sesión en el terminal mediante la CLI de Azure o PowerShell
  3. 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.