مشاركة عبر


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

قاعدة بيانات 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.

معلمات تيرافورم الرئيسية

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

المعلمة‬ Scope الوصف والقيود مثال للقيمة
prefix التسمية بادئة تستخدم لجميع أسماء الموارد. يجب أن يكون الحروف صغيرة، أبجديا رقميا، وفريدا لكل اشتراك. cosmosdemo
location مجموعة الموارد Azure Region لمجموعة الموارد. هذا الموقع ينطبق فقط على مجموعة الموارد، وليس على حساب قاعدة بيانات كوزموس. eastus
cosmosdb_account_location حساب قاعدة بيانات كوزموس Azure region for the Azure Cosmos DB account. يمكن أن يختلف هذا عن موقع مجموعة الموارد. eastus
throughput قاعدة البيانات (RU/s) تم توفير معدل النقل لقاعدة بيانات SQL بوحدات طلب في الثانية (RU/s). يجب أن يكون بين 400 و1,000,000 روبي في الثانية. 400

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

ملف 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
}

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

متغيرات ملف Terraform

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

النشر عبر terraform

  1. احفظ ملفات terraform كملفات main.tf variables.tf providers.tf إلى الكمبيوتر المحلي.
  2. تسجيل الدخول إلى المحطة الطرفية الخاصة بك عبر Azure CLI أو PowerShell
  3. النشر عبر أوامر Terraform
    • تيرافورم إنيت
      النتيجة المتوقعة: يقوم Terraform بتهيئته بنجاح ويقوم بتنزيل مزود azurerm.
    • خطة terraform
      النتيجة المتوقعة: يظهر مخرج الخطة 3 للإضافة، 0 للتغيير، 0 للتدمير.
    • تطبيق terraform
      النتيجة المتوقعة: النتيجة النهائية تشمل Apply complete! الموارد: 3 أضيفت، 0 تغيرت، 0 تدمير.

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

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

  • Azure CLI
  • Azure PowerShell
az resource list --resource-group "your resource group name"

النتيجة المتوقعة: يسرد الناتج موردا Microsoft.DocumentDB/databaseAccounts مع قاعدة بياناته وحاويتها.

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

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

  • Azure CLI
  • Azure PowerShell
az group delete --name "your resource group name"

النتيجة المتوقعة: Azure CLI يؤكد حذف مجموعة الموارد ولم يعد يذكره في الاشتراك.

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

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