Quickstart: Een Azure Cosmos DB-database en -container maken met behulp van Terraform
VAN TOEPASSING OP: NoSQL
Azure Cosmos DB is de snelle NoSQL-database van Microsoft, met open API's voor elke schaal. U kunt Azure Cosmos DB gebruiken om snel databases voor sleutels en waarden, documentdatabases en grafiekdatabases te maken en te doorzoeken. Zonder een creditcard of een Azure-abonnement kunt u een gratis Azure Cosmos DB-account instellen. Deze quickstart is gericht op het proces van implementaties via Terraform om een Azure Cosmos-database en een container in die database te maken. U kunt later gegevens opslaan in deze container.
Vereisten
Een Azure-abonnement of gratis Azure Cosmos DB-proefaccount
- Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Terraform moet worden geïnstalleerd op uw lokale computer. Hier vindt u installatie-instructies.
Het Terraform-bestand controleren
De Terraform-bestanden die in deze quickstart worden gebruikt, vindt u in de opslagplaats met terraform-voorbeelden. Maak de onderstaande drie bestanden: providers.tf, main.tf en variables.tf. Variabelen kunnen worden ingesteld in de opdrachtregel of ook met een terraforms.tfvars-bestand.
Terraform-providerbestand
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
}
}
}
Hoofd-Terraform-bestand
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-bestand met variabelen
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."
}
}
Er worden drie Cosmos DB-resources gedefinieerd in het terraform-hoofdbestand.
Microsoft.DocumentDB/databaseAccounts: Maak een Azure Cosmos-account.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: Maak een Azure Cosmos-database.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: Maak een Azure Cosmos-container.
Implementeren via terraform
- Sla de terraform-bestanden op als main.tf, variables.tf en providers.tf op uw lokale computer.
- Meld u aan bij uw terminal via Azure CLI of PowerShell
- Implementeren via Terraform-opdrachten
- terraform init
- terraform-plan
- terraform is van toepassing
De implementatie valideren
Gebruik Azure Portal, Azure CLI of Azure PowerShell om de geïmplementeerde resources in de resourcegroep weer te geven.
az resource list --resource-group "your resource group name"
Resources opschonen
Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources het beste intact laten. Wanneer u deze niet meer nodig hebt, gebruikt u Azure Portal, Azure CLI of Azure PowerShell om de resourcegroep en de bijbehorende resources te verwijderen.
az group delete --name "your resource group name"
Volgende stappen
In deze quickstart hebt u een Azure Cosmos-account, een database en een container gemaakt via terraform en de implementatie gevalideerd. Ga verder met de onderstaande artikelen voor meer informatie over Azure Cosmos DB en Terraform.
- Lees een overzicht van Azure Cosmos DB.
- Meer informatie over Terraform.
- Meer informatie over Azure Terraform Provider.
- Cosmos DB beheren met Terraform
- Wilt u capaciteitsplanning uitvoeren voor een migratie naar Azure Cosmos DB? U kunt informatie over uw bestaande databasecluster gebruiken voor capaciteitsplanning.
- Als alles wat u weet het aantal vCores en servers in uw bestaande databasecluster is, leest u meer over het schatten van aanvraageenheden met behulp van vCores of vCPU's.
- Als u typische aanvraagtarieven voor uw huidige databaseworkload kent, leest u meer over het schatten van aanvraageenheden met behulp van azure Cosmos DB-capaciteitsplanner.