Udostępnij za pośrednictwem


Szybki start — tworzenie bazy danych i kontenera usługi Azure Cosmos DB przy użyciu narzędzia Terraform

DOTYCZY: NoSQL

Usługa Azure Cosmos DB to szybka baza danych NoSQL firmy Microsoft z otwartymi interfejsami API dla dowolnej skali. Usługa Azure Cosmos DB umożliwia szybkie tworzenie baz danych kluczy/wartości, baz danych dokumentów i grafów oraz wykonywanie zapytań względem nich. Bez karty kredytowej lub subskrypcji platformy Azure możesz skonfigurować bezpłatne konto Wypróbuj usługę Azure Cosmos DB. Ten przewodnik Szybki start koncentruje się na procesie wdrożeń za pośrednictwem narzędzia Terraform w celu utworzenia bazy danych Usługi Azure Cosmos i kontenera w tej bazie danych. Później można przechowywać dane w tym kontenerze.

Wymagania wstępne

Subskrypcja platformy Azure lub bezpłatne konto wersji próbnej usługi Azure Cosmos DB

Program Terraform powinien być zainstalowany na komputerze lokalnym. Instrukcje instalacji można znaleźć tutaj.

Zapoznaj się z plikiem Terraform

Pliki programu Terraform używane w tym przewodniku Szybki start można znaleźć w repozytorium przykładów terraform. Utwórz następujące trzy pliki: providers.tf, main.tf i variables.tf. Zmienne można ustawiać w wierszu polecenia lub alternatywnie za pomocą pliku terraforms.tfvars.

Plik narzędzia Terraform dostawcy

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

Główny plik programu 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
}

Plik Terraform zmiennych

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

Trzy zasoby usługi Cosmos DB są zdefiniowane w głównym pliku terraform.

Wdrażanie za pomocą narzędzia terraform

  1. Zapisz pliki terraform jako main.tf, variables.tf i providers.tf na komputerze lokalnym.
  2. Zaloguj się do terminalu za pomocą interfejsu wiersza polecenia platformy Azure lub programu PowerShell
  3. Wdrażanie za pomocą poleceń narzędzia Terraform
    • terraform init
    • plan terraform
    • zastosowanie narzędzia terraform

Weryfikowanie wdrożenia

Użyj witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby wyświetlić listę wdrożonych zasobów w grupie zasobów.

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

Czyszczenie zasobów

Jeśli planujesz kontynuować pracę z kolejnymi przewodnikami Szybki start i samouczkami, możesz pozostawić te zasoby na miejscu. Gdy grupa zasobów i jej zasoby nie będą już potrzebne, użyj witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.

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

Następne kroki

W tym przewodniku Szybki start utworzono konto usługi Azure Cosmos, bazę danych i kontener za pośrednictwem narzędzia terraform i sprawdzono wdrożenie. Aby dowiedzieć się więcej na temat usług Azure Cosmos DB i Terraform, przejdź do poniższych artykułów.