クイック スタート - Terraform を使用して Azure Cosmos DB データベースとコンテナーを作成する
適用対象: NoSQL
Azure Cosmos DB は、あらゆる規模に対応する、オープン API を備えた Microsoft の高速 NoSQL データベースです。 Azure Cosmos DB を使用すると、キーと値のデータベース、ドキュメント データベース、グラフ データベースをすばやく作成し、クエリを実行できます。 クレジット カードまたは Azure サブスクリプションがない場合は、無料の Azure Cosmos DB 試用版アカウントをセットアップできます。 このクイックスタートでは、Terraform を使用してデプロイし、Azure Cosmos データベースを作成し、そのデータベース内にコンテナーを作成するプロセスについて説明します。 その後、そのコンテナーにデータを格納することができます。
前提条件
Azure サブスクリプションまたは Azure Cosmos DB の無料試用版アカウント
- Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
Terraform はローカル コンピューターにインストールする必要があります。 インストール手順については、こちらを参照してください。
Terraform ファイルを確認する
このクイック スタートで使用する Terraform ファイルは、terraform サンプル リポジトリにあります。 providers.tf、main.tf、variables.tf の 3 つのファイルを作成します。 変数は、コマンド ラインで設定することも、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."
}
}
メインの Terraform ファイルには、3 つの 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 コマンドを使用してデプロイする
- terraform 初期化
- Terraform プラン
- terraform 適用
デプロイの検証
Azure portal、Azure CLI、または Azure PowerShell を使用して、リソースグループ内のデプロイ済みリソースをリスト表示します。
az resource list --resource-group "your resource group name"
リソースをクリーンアップする
後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことができます。 不要になったら、Azure portal、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 への移行のための容量計画を実行しようとしていますか? 容量計画のために、既存のデータベース クラスターに関する情報を使用できます。
- 既存のデータベース クラスター内の仮想コアとサーバーの数のみがわかっている場合は、仮想コアまたは vCPU を使用した要求ユニットの見積もりに関するページを参照してください。
- 現在のデータベース ワークロードの標準的な要求レートがわかっている場合は、Azure Cosmos DB Capacity Planner を使用した要求ユニットの見積もりに関するページを参照してください。