Avvio rapido: creare un database Azure Cosmos DB e un contenitore usando Terraform
SI APPLICA A: NoSQL
Azure Cosmos DB è il database NoSQL veloce di Microsoft con API aperte per qualsiasi scala. È possibile usare Azure Cosmos DB per creare rapidamente database di chiavi/valori, di documenti e a grafo ed eseguire query su di essi. È possibile configurare un account Azure Cosmos DB di prova gratuito anche senza una carta di credito o una sottoscrizione di Azure. Questo argomento di avvio rapido illustra il processo di distribuzione tramite Terraform per creare un database Azure Cosmos e un contenitore al suo interno. Sarà quindi possibile archiviare dati in questo contenitore.
Prerequisiti
Una sottoscrizione di Azure o un account di prova gratuito di Azure Cosmos DB
- Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Terraform deve essere installato nel computer locale. Le istruzioni per l'installazione sono consultabili qui.
Esaminare il file Terraform
I file Terraform usati in questa guida introduttiva sono disponibili nel repository di esempi di terraform . Creare i tre file seguenti: providers.tf, main.tf e variables.tf. Le variabili possono essere impostate nella riga di comando o in alternativa con un file terraforms.tfvars.
File Terraform Provider
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 {}
}
File Terraform Main
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
}
File Terraform Variables
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."
}
}
Nel file Terraform principale sono definite tre risorse di Cosmos DB.
Microsoft.DocumentDB/databaseAccounts: consente di creare un account Azure Cosmos.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: consente di creare un database Azure Cosmos.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: consente di creare un contenitore Azure Cosmos.
Eseguire la distribuzione tramite Terraform
- Salvare i file Terraform come main.tf, variables.tf e providers.tf nel computer locale.
- Accedere al terminale tramite l'interfaccia della riga di comando di Azure o PowerShell
- Eseguire la distribuzione tramite i comandi Terraform
- terraform init
- terraform plan
- terraform apply
Convalidare la distribuzione
Usare il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell per elencare le risorse distribuite nel gruppo di risorse.
az resource list --resource-group "your resource group name"
Pulire le risorse
Se si prevede di usare le guide di avvio rapido e le esercitazioni successive, è consigliabile non cancellare le risorse create. Quando non è più necessario, usare il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell per eliminare il gruppo di risorse e le relative risorse.
az group delete --name "your resource group name"
Passaggi successivi
In questo argomento di avvio rapido sono stati creati un account, un database e un contenitore Azure Cosmos DB usando Terraform ed è stata convalidata la distribuzione. Per altre informazioni su Azure Cosmos DB e Terraform, continuare con gli articoli seguenti.
- Leggere una panoramica di Azure Cosmos DB.
- Atre informazioni su Terraform.
- Altre informazioni suAzure Terraform Provider.
- Gestire Cosmos DB con Terraform
- Si sta tentando di pianificare la capacità per una migrazione ad Azure Cosmos DB? È possibile usare le informazioni del cluster di database esistente per la pianificazione della capacità.
- Se si ha disposizione solo il numero di vCore e server nel cluster di database esistente, leggere le informazioni sulla stima delle unità richieste con vCore o vCPU.
- Se si conosce la frequenza delle richieste tipiche per il carico di lavoro corrente del database, leggere le informazioni sulla stima delle unità richieste con lo strumento di pianificazione della capacità di Azure Cosmos DB.