快速入门 - 使用 Terraform 创建 Azure Cosmos DB 数据库和容器
适用范围: NoSQL
Azure Cosmos DB 是 Azure 的快速 NoSQL 数据库,具有适合任何规模的开放式 API。 使用 Azure Cosmos DB,可以快速创建和查询键/值数据库、文档数据库和图形数据库。 本快速入门重点介绍通过 Terraform 进行部署以创建 Azure Cosmos 数据库的过程,以及在该数据库内创建容器的过程。 稍后你可以在该容器中存储数据。
先决条件
Azure 订阅,或免费的 Azure Cosmos DB 试用帐户
- 如果没有 Azure 订阅,可在开始前创建一个试用帐户。
应在本地计算机上安装 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 = "chinaeast"
description = "Resource group location"
}
variable "cosmosdb_account_location" {
type = string
default = "chinaeast"
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 文件中定义了三个 Cosmos DB 资源。
Microsoft.DocumentDB/databaseAccounts:创建 Azure Cosmos 帐户。
Microsoft.DocumentDB/databaseAccounts/sqlDatabases:创建 Azure Cosmos 数据库。
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers:创建 Azure Cosmos 容器。
通过 terraform 进行部署
将 terraform 文件以 main.tf、variables.tf 和 providers.tf 名称另存到本地计算机上。
通过 Azure CLI 或 PowerShell 登录到终端
导出 Terraform 环境变量
export ARM_ENVIRONMENT=china
$env:ARM_ENVIRONMENT = "china"
通过 Terraform 命令进行部署
- terraform init
- terraform plan
- terraform apply
验证部署
使用 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"
后续步骤
在本快速入门中,你已使用 terraform 创建了 Azure Cosmos 帐户、数据库和容器,并验证了部署。 若要详细了解 Azure Cosmos DB 和 terraform,请继续阅读以下文章。
- 阅读 Azure Cosmos DB 概述。
- 详细了解 Terraform。
- 详细了解 Azure Terraform 提供程序。
- 使用 Terraform 管理 Cosmos DB
- 尝试为迁移到 Azure Cosmos DB 进行容量计划? 可以使用有关现有数据库群集的信息进行容量规划。
- 如果你只知道现有数据库群集中的 vCore 和服务器数量,请阅读根据 vCore 或 vCPU 数量估算请求单位数。
- 如果你知道当前数据库工作负载的典型请求速率,请阅读使用 Azure Cosmos DB 容量规划工具估算请求单位。