Delen via


Quickstart: Een Azure Cosmos DB-database en -container maken met behulp van Terraform

VAN TOEPASSING OP: NoSQL

Azure Cosmos DB is de snelle NoSQL-database van Microsoft, met open API's voor elke schaal. U kunt Azure Cosmos DB gebruiken om snel databases voor sleutels en waarden, documentdatabases en grafiekdatabases te maken en te doorzoeken. Zonder een creditcard of een Azure-abonnement kunt u een gratis Azure Cosmos DB-account instellen. Deze quickstart is gericht op het proces van implementaties via Terraform om een Azure Cosmos-database en een container in die database te maken. U kunt later gegevens opslaan in deze container.

Vereisten

Een Azure-abonnement of gratis Azure Cosmos DB-proefaccount

Terraform moet worden geïnstalleerd op uw lokale computer. Hier vindt u installatie-instructies.

Het Terraform-bestand controleren

De Terraform-bestanden die in deze quickstart worden gebruikt, vindt u in de opslagplaats met terraform-voorbeelden. Maak de onderstaande drie bestanden: providers.tf, main.tf en variables.tf. Variabelen kunnen worden ingesteld in de opdrachtregel of ook met een terraforms.tfvars-bestand.

Terraform-providerbestand

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 {}
}

Hoofd-Terraform-bestand

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
}

Terraform-bestand met variabelen

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."
  }
}

Er worden drie Cosmos DB-resources gedefinieerd in het terraform-hoofdbestand.

Implementeren via terraform

  1. Sla de terraform-bestanden op als main.tf, variables.tf en providers.tf op uw lokale computer.
  2. Meld u aan bij uw terminal via Azure CLI of PowerShell
  3. Implementeren via Terraform-opdrachten
    • terraform init
    • terraform-plan
    • terraform is van toepassing

De implementatie valideren

Gebruik Azure Portal, Azure CLI of Azure PowerShell om de geïmplementeerde resources in de resourcegroep weer te geven.

az resource list --resource-group "your resource group name"

Resources opschonen

Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources het beste intact laten. Wanneer u deze niet meer nodig hebt, gebruikt u Azure Portal, Azure CLI of Azure PowerShell om de resourcegroep en de bijbehorende resources te verwijderen.

az group delete --name "your resource group name"

Volgende stappen

In deze quickstart hebt u een Azure Cosmos-account, een database en een container gemaakt via terraform en de implementatie gevalideerd. Ga verder met de onderstaande artikelen voor meer informatie over Azure Cosmos DB en Terraform.