Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 un account Azure, creare un account 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.
Parametri chiave di Terraform
La tabella seguente riepiloga le variabili critiche usate in questo argomento di avvio rapido, il relativo ambito, i vincoli e i valori di esempio.
| Parametro | Ambito | Descrizione e vincoli | Valore di esempio |
|---|---|---|---|
prefix |
Denominazione | Prefisso usato per tutti i nomi delle risorse. Deve essere minuscolo, alfanumerico e univoco per ogni sottoscrizione. | cosmosdemo |
location |
Gruppo di risorse | Area di Azure per il gruppo di risorse. Questa posizione si applica solo al gruppo di risorse, non all'account di Cosmos DB. | eastus |
cosmosdb_account_location |
Account Cosmos DB | Area di Azure per l'account Azure Cosmos DB. Questo può differire dalla posizione del gruppo di risorse. | eastus |
throughput |
Database (UR/s) | Throughput allocato per il database SQL in unità di richiesta al secondo (RU/s). Deve essere compreso tra 400 e 1.000.000 UR/sec. | 400 |
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 {
resource_group {
prevent_deletion_if_contains_resources = false
}
}
}
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
}
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: creare un database Azure Cosmos con throughput a livello di database (RU/s).
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: consente di creare un contenitore Azure Cosmos.
File Terraform Variables
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."
}
}
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
Risultato previsto: Terraform inizializza correttamente e scarica il provider azurerm. - terraform plan
Risultato previsto: L'output del piano mostra 3 per aggiungere, 0 per modificare, 0 per eliminare definitivamente. - terraform apply
Risultato previsto: L'output finale include Applicazione completata! Risorse: 3 aggiunte, 0 modificate, 0 distrutte.
- terraform init
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"
Risultato previsto: L'output elenca una Microsoft.DocumentDB/databaseAccounts risorsa insieme al relativo database e contenitore.
Pulire le risorse
Se hai intenzione di continuare a lavorare con le seguenti guide di avvio rapido e i tutorial, potrebbe essere utile lasciare queste risorse al loro posto. Quando non sono più necessari, 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"
Risultato previsto: L'interfaccia della riga di comando di Azure conferma l'eliminazione del gruppo di risorse e non la elenca più nella sottoscrizione.
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 conosce solo il numero di vCore e server nel cluster di database esistente, leggere informazioni sulla stima delle unità richiesta 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.