التشغيل السريع - إنشاء قاعدة بيانات وحاوية Azure Cosmos DB باستخدام Terraform

ينطبق على: NoSQL

قاعدة بيانات Azure المخصصةهي قاعدة بيانات NoSQL السريعة من Microsoft مع واجهات برمجة تطبيقات مفتوحة لأي سعة. يمكنك استخدام Azure Cosmos DB لإنشاء قواعد بيانات المفتاح / القيمة والاستعلام عنها بسرعة وقواعد بيانات المستندات وقواعد بيانات الرسم البياني. بدون بطاقة ائتمان أو اشتراك Azure، يمكنك إعداد حساب تجربة Azure Cosmos DB مجاني. يركز هذا التشغيل السريع على عملية النشر عبر Terraform لإنشاء قاعدة بيانات Azure Cosmos وحاوية داخل قاعدة البيانات هذه. يمكنك لاحقًا تخزين البيانات في هذه الحاوية.

المتطلبات الأساسية

اشتراك Azure أو حساب تجريبي مجاني من Azure Cosmos DB

يجب تثبيت Terraform على الكمبيوتر المحلي. يمكن العثور على إرشادات التثبيت هنا.

مراجعة ملف Terraform

يمكن العثور على ملفات Terraform المستخدمة في هذا التشغيل السريع في مستودع نماذج terraform. إنشاء الملفات الثلاثة التالية: providers.tf main.tf variables.tf. يمكن تعيين المتغيرات في سطر الأوامر أو بدلا من ذلك مع ملف terraforms.tfvars.

ملف Terraform الموفر

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 الرئيسي

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

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

يتم تعريف ثلاثة موارد Cosmos DB في ملف terraform الرئيسي.

النشر عبر terraform

  1. احفظ ملفات terraform كملفات main.tf variables.tf providers.tf إلى الكمبيوتر المحلي.
  2. تسجيل الدخول إلى المحطة الطرفية الخاصة بك عبر Azure CLI أو PowerShell
  3. النشر عبر أوامر Terraform
    • terraform init
    • خطة terraform
    • تطبيق terraform

التحقُّق من صحة عملية النشر

استخدم مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell لإدراج الموارد الموزعة في مجموعة الموارد.

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

تنظيف الموارد

إذا كنت تخطط لمواصلة العمل بالبدايات السريعة والبرامج التعليمية اللاحقة، فقد ترغب في ترك هذه الموارد في مكانها. عند عدم الحاجة، استخدم مدخل Azure أو Azure CLI أو Azure PowerShell لحذف مجموعة الموارد وموارده.

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

الخطوات التالية

في هذا التشغيل السريع، قمت بإنشاء حساب Azure Cosmos وقاعدة بيانات وحاوية عبر terraform والتحقق من صحة النشر. لمعرفة المزيد حول Azure Cosmos DB وTerraform، تابع إلى المقالات أدناه.