Aracılığıyla paylaş


Hızlı Başlangıç - Terraform kullanarak Azure Cosmos DB veritabanı ve kapsayıcısı oluşturma

UYGULANANLAR: NoSQL

Azure Cosmos DB, Microsoft'un her ölçekte açık API'lere sahip hızlı NoSQL veritabanıdır. Anahtar/değer veritabanlarını, belge veritabanlarını ve graf veritabanlarını hızla oluşturmak ve sorgulamak için Azure Cosmos DB'yi kullanabilirsiniz. Kredi kartı veya Azure aboneliği olmadan ücretsiz bir Azure Cosmos DB'yi Deneyin hesabı ayarlayabilirsiniz. Bu hızlı başlangıçta, Terraform aracılığıyla bir Azure Cosmos veritabanı ve bu veritabanı içinde bir kapsayıcı oluşturmak için dağıtım işlemlerine odaklanılır. Verileri daha sonra bu kapsayıcıda depolayabilirsiniz.

Önkoşullar

Azure aboneliği veya ücretsiz Azure Cosmos DB deneme hesabı

Terraform yerel bilgisayarınıza yüklenmelidir. Yükleme yönergelerini burada bulabilirsiniz.

Terraform Dosyasını Gözden Geçirme

Bu hızlı başlangıçta kullanılan Terraform dosyaları terraform örnekleri deposunda bulunabilir. Aşağıdaki üç dosyayı oluşturun: providers.tf, main.tf ve variables.tf. Değişkenler komut satırında veya alternatif olarak terraforms.tfvars dosyasıyla ayarlanabilir.

Sağlayıcı Terraform Dosyası

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 {
    resource_group {
      prevent_deletion_if_contains_resources = false
    }
  }
}

Ana Terraform Dosyası

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
}

Değişkenler Terraform Dosyası

variable "prefix" {
  type        = string
  default     = "cosmosdb-manualscale"
  description = "Prefix of the resource name"
}

variable "location" {
  type        = string
  default     = "Canada Central"
  description = "Resource group location"
}

variable "cosmosdb_account_location" {
  type        = string
  default     = "Canada Central"
  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."
  }
}

Ana terraform dosyasında üç Cosmos DB kaynağı tanımlanır.

terraform aracılığıyla dağıtma

  1. Terraform dosyalarını yerel bilgisayarınıza main.tf, variables.tf ve providers.tf olarak kaydedin.
  2. Azure CLI veya PowerShell aracılığıyla terminalinizde oturum açın
  3. Terraform komutları aracılığıyla dağıtma
    • terraform init
    • terraform planı
    • terraform apply

Dağıtımı doğrulama

Kaynak grubundaki dağıtılan kaynakları listelemek için Azure portalını, Azure CLI'yı veya Azure PowerShell'i kullanın.

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

Kaynakları temizleme

Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmek istiyorsanız, bu kaynakları yerinde bırakmak isteyebilirsiniz. Artık gerekli olmadığında, kaynak grubunu ve kaynaklarını silmek için Azure portalı, Azure CLI veya Azure PowerShell'i kullanın.

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

Sonraki adımlar

Bu hızlı başlangıçta terraform aracılığıyla bir Azure Cosmos hesabı, veritabanı ve kapsayıcı oluşturdunuz ve dağıtımı doğruladunuz. Azure Cosmos DB ve Terraform hakkında daha fazla bilgi edinmek için aşağıdaki makalelere geçin.