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ı
- Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
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.
Microsoft.DocumentDB/databaseAccounts: Azure Cosmos hesabı oluşturun.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: Azure Cosmos veritabanı oluşturun.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: Azure Cosmos kapsayıcısı oluşturun.
terraform aracılığıyla dağıtma
- Terraform dosyalarını yerel bilgisayarınıza main.tf, variables.tf ve providers.tf olarak kaydedin.
- Azure CLI veya PowerShell aracılığıyla terminalinizde oturum açın
- 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.
- Azure Cosmos DB'ye Genel Bakış'a göz atın.
- Terraform hakkında daha fazla bilgi edinin.
- Azure Terraform Sağlayıcısı hakkında daha fazla bilgi edinin.
- Terraform ile Cosmos DB'i yönetme
- Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.
- Tek bildiğiniz mevcut veritabanı kümenizdeki sanal çekirdek ve sunucu sayısıysa, sanal çekirdekleri veya vCPU'ları kullanarak istek birimlerini tahmin etme hakkında bilgi edinin.
- Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız Azure Cosmos DB kapasite planlayıcısı kullanarak istek birimlerini tahmin etme hakkında bilgi edinin.