Mulai Cepat - Membuat database dan kontainer Azure Cosmos DB menggunakan Terraform

Azure Cosmos DB adalah database NoSQL cepat Microsoft dengan API terbuka untuk skala apa pun. Anda dapat menggunakan Azure Cosmos DB untuk membuat dan mengueri database kunci/nilai, dokumen, dan grafik dengan cepat. Tanpa kartu kredit atau langganan Azure, Anda dapat menyiapkan Coba akun Azure Cosmos DB gratis. Mulai cepat ini berfokus pada proses penyebaran melalui Terraform untuk membuat database Azure Cosmos dan kontainer dalam database tersebut. Anda nantinya dapat menyimpan data dalam kontainer ini.

Prerequisites

Langganan Azure atau akun uji coba Azure Cosmos DB gratis

  • Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.

Terraform harus diinstal pada komputer lokal Anda. Instruksi penginstalan dapat ditemukan di sini.

Meninjau File Terraform

File Terraform yang digunakan dalam mulai cepat ini dapat ditemukan di repositori sampel terraform. Buat tiga file di bawah ini: providers.tf, main.tf, dan variables.tf. Variabel dapat diatur dalam baris perintah atau sebagai alternatif dengan file terraforms.tfvars.

Parameter Kunci Terraform

Tabel berikut merangkum variabel utama yang digunakan dalam panduan memulai cepat ini, meliputi cakupan, batasan, dan contoh nilainya.

Parameter Scope Deskripsi dan batasan Contoh nilai
prefix Penamaan Awalan yang digunakan untuk semua nama sumber daya. Harus huruf kecil, alfanumerik, dan unik per langganan. cosmosdemo
location grup Sumber Daya Wilayah Azure untuk grup sumber daya. Lokasi ini hanya berlaku untuk grup sumber daya, bukan akun Cosmos DB. eastus
cosmosdb_account_location Akun Cosmos DB Wilayah Azure untuk akun Azure Cosmos DB. Ini dapat berbeda dari lokasi grup sumber daya. eastus
throughput Database (RU/s) Throughput yang disediakan untuk database SQL dalam satuan permintaan per detik (RU/s). Harus antara 400 dan 1.000.000 RU/dtk. 400

File Terraform Penyedia

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

File Terraform Utama

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
}

Tiga sumber daya Cosmos DB didefinisikan dalam file terraform utama.

File Terraform Variabel

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

Menerapkan melalui Terraform

  1. Simpan file terraform sebagai main.tf, variables.tf, dan providers.tf ke komputer lokal Anda.
  2. Masuk ke terminal Anda melalui Azure CLI atau PowerShell
  3. Menyebarkan melalui perintah Terraform
    • terraform init
      Hasil yang diharapkan: Terraform berhasil menginisialisasi dan mengunduh penyedia azurerm.
    • rencana terraform
      Hasil yang diharapkan: Keluaran rencana menunjukkan 3 untuk ditambahkan, 0 untuk diubah, 0 untuk dihancurkan.
    • terraform terapkan
      Hasil yang diharapkan: Output akhir termasuk Terapkan selesai! Sumber daya: 3 ditambahkan, 0 diubah, 0 dihancurkan.

Validasikan penggelaran

Gunakan portal Azure, Azure CLI, atau Azure PowerShell untuk mencantumkan sumber daya yang disebarkan dalam grup sumber daya.

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

Hasil yang diharapkan: Output mencantumkan Microsoft.DocumentDB/databaseAccounts sumber daya bersama dengan database dan kontainernya.

Membersihkan sumber daya

Jika Anda berencana untuk terus bekerja dengan panduan memulai cepat dan tutorial berikutnya, Anda mungkin ingin membiarkan sumber daya ini tetap ada. Jika tidak lagi diperlukan, gunakan portal Azure, Azure CLI, atau Azure PowerShell untuk menghapus grup sumber daya dan sumber dayanya.

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

Hasil yang diharapkan: Azure CLI mengonfirmasi penghapusan grup sumber daya dan tidak lagi mencantumkannya dalam langganan.

Langkah berikutnya

Dalam mulai cepat ini, Anda membuat akun Azure Cosmos, database, dan kontainer melalui terraform dan memvalidasi penyebaran. Untuk mempelajari selengkapnya tentang Azure Cosmos DB dan Terraform, lanjutkan ke artikel di bawah ini.