Dela via


Snabbstart – Skapa en Azure Cosmos DB-databas och container med Terraform

GÄLLER FÖR: NoSQL

Azure Cosmos DB är Microsofts snabba NoSQL-databas med öppna API:er för valfri skala. Du kan använda Azure Cosmos DB för att snabbt skapa och fråga efter nyckel-/värdedatabaser, dokumentdatabaser och grafdatabaser. Utan ett kreditkort eller en Azure-prenumeration kan du konfigurera ett kostnadsfritt Prova Azure Cosmos DB-konto. Den här snabbstarten fokuserar på distributionsprocessen via Terraform för att skapa en Azure Cosmos-databas och en container i databasen. Du kan senare lagra data i den här containern.

Förutsättningar

En Azure-prenumeration eller ett kostnadsfritt Utvärderingskonto för Azure Cosmos DB

Terraform bör installeras på den lokala datorn. Installationsanvisningar finns här.

Granska Terraform-filen

Terraform-filerna som används i den här snabbstarten finns på terraform-exempellagringsplatsen. Skapa de tre filerna nedan: providers.tf, main.tf och variables.tf. Variabler kan anges på kommandoraden eller alternativt med en terraforms.tfvars-fil.

Terraform-providerfil

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

Terraform-huvudfil

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-fil för variabler

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

Tre Cosmos DB-resurser definieras i huvud terraform-filen.

Distribuera via terraform

  1. Spara terraform-filerna som main.tf, variables.tf och providers.tf på den lokala datorn.
  2. Logga in på terminalen via Azure CLI eller PowerShell
  3. Distribuera via Terraform-kommandon
    • terraform init
    • terraform-plan
    • terraform apply

Verifiera distributionen

Använd Azure-portalen, Azure CLI eller Azure PowerShell för att lista de distribuerade resurserna i resursgruppen.

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

Rensa resurser

Om du planerar att fortsätta arbeta med efterföljande snabbstarter och självstudier kanske du vill lämna dessa resurser på plats. När den inte längre behövs använder du Azure-portalen, Azure CLI eller Azure PowerShell för att ta bort resursgruppen och dess resurser.

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

Nästa steg

I den här snabbstarten skapade du ett Azure Cosmos-konto, en databas och en container via terraform och verifierade distributionen. Om du vill veta mer om Azure Cosmos DB och Terraform fortsätter du till artiklarna nedan.