Краткое руководство. Создание базы данных и контейнера Azure Cosmos DB с помощью Terraform
ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL
Azure Cosmos DB — это быстрая база данных NoSQL от Майкрософт с открытыми API для использования в любом масштабе. С помощью 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. Переменные можно задать в командной строке или в качестве альтернативы с помощью файла 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 {
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
}
Файл 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."
}
}
Три ресурса Cosmos DB определяются в основном файле terraform.
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, 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"
Следующие шаги
В этом кратком руководстве вы создали учетную запись Azure Cosmos, базу данных и контейнер с помощью terraform и проверили развертывание. Дополнительные сведения о Azure Cosmos DB и Terraform см. в следующих статьях.
- Ознакомьтесь с обзором Azure Cosmos DB.
- Дополнительные сведения об Terraform.
- Дополнительные сведения о поставщике Azure Terraform.
- Управление Cosmos DB с помощью Terraform
- Если вы планируете ресурсы для миграции в Azure Cosmos DB, Для планирования ресурсов можно использовать сведения об имеющемся кластере базы данных.
- Если вам известно только количество виртуальных ядер и серверов в существующем кластере баз данных, прочитайте об оценке единиц запроса на основе этих данных.
- Если вам известна стандартная частота запросов для текущей рабочей нагрузки базы данных, ознакомьтесь со статьей о расчете единиц запросов с помощью планировщика ресурсов Azure Cosmos DB.