Sdílet prostřednictvím


Rychlý start – Vytvoření databáze a kontejneru Azure Cosmos DB pomocí Terraformu

PLATÍ PRO: NoSQL

Azure Cosmos DB je rychlá databáze NoSQL od Microsoftu s otevřenými rozhraními API pro libovolné škálování. Azure Cosmos DB můžete použít k rychlému vytváření a dotazování databází klíč/hodnota, databází dokumentů a grafových databází. Bez platební karty nebo předplatného Azure můžete nastavit bezplatný účet Vyzkoušet službu Azure Cosmos DB. Tento rychlý start se zaměřuje na proces nasazení prostřednictvím Terraformu za účelem vytvoření databáze Azure Cosmos a kontejneru v rámci této databáze. Později můžete data uložit do tohoto kontejneru.

Požadavky

Předplatné Azure nebo bezplatný zkušební účet služby Azure Cosmos DB

Terraform by měl být nainstalovaný na místním počítači. Pokyny k instalaci najdete tady.

Kontrola souboru Terraformu

Soubory Terraformu použité v tomto rychlém startu najdete v úložišti ukázek terraformu. Vytvořte následující tři soubory: providers.tf, main.tf a variables.tf. Proměnné lze nastavit na příkazovém řádku nebo alternativně se souborem terraforms.tfvars.

Soubor Terraformu zprostředkovatele

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

Hlavní soubor Terraformu

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
}

Soubor Terraformu s proměnnými

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

Tři prostředky Cosmos DB jsou definovány v hlavním souboru terraformu.

Nasazení prostřednictvím terraformu

  1. Uložte soubory terraformu jako main.tf, variables.tf a providers.tf do místního počítače.
  2. Přihlášení k terminálu přes Azure CLI nebo PowerShell
  3. Nasazení pomocí příkazů Terraformu
    • terraform init
    • terraform plan
    • terraform apply

Ověření nasazení

Pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu můžete zobrazit seznam nasazených prostředků ve skupině prostředků.

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

Vyčištění prostředků

Pokud chcete pokračovat v práci s dalšími rychlými starty a kurzy, můžete tyto prostředky ponechat na místě. Pokud už ji nepotřebujete, odstraňte skupinu prostředků a její prostředky pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu.

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

Další kroky

V tomto rychlém startu jste vytvořili účet Azure Cosmos, databázi a kontejner prostřednictvím terraformu a ověřili jste nasazení. Další informace o službě Azure Cosmos DB a Terraformu najdete v následujících článcích.