Démarrage rapide : créer une base de données et un conteneur Azure Cosmos DB à l’aide de Terraform
S’APPLIQUE À : NoSQL
Azure Cosmos DB est la base de données NoSQL rapide de Microsoft avec des API ouvertes pour toute échelle. Vous pouvez utiliser Azure Cosmos DB pour créer et interroger rapidement des bases de données de clés/valeurs, de documents et de graphes. Sans carte de crédit ou abonnement Azure, vous pouvez configurer un compte d’essai Azure Cosmos DB gratuit. Ce guide de démarrage rapide porte essentiellement sur le processus de déploiement via Terraform pour créer une base de données Azure Cosmos et un conteneur dans cette base de données. Vous pouvez ensuite stocker des données dans ce conteneur.
Prérequis
Un abonnement Azure ou un compte d’essai gratuit Azure Cosmos DB
- Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Terraform doit être installé sur votre ordinateur local. Les instructions d'installation se trouvent ici.
Passer en revue le fichier Terraform
Les fichiers Terraform utilisés dans ce guide de démarrage rapide sont disponibles dans le référentiel d’exemples terraform. Créez les trois fichiers ci-dessous : providers.tf, main.tf et variables.tf. Les variables peuvent être définies en ligne de commande ou alternativement avec un fichier terraforms.tfvars.
Fichier Terraform du fournisseur
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 {}
}
Fichier Terraform principal
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
}
Fichier Terraform des 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."
}
}
Trois ressources Cosmos DB sont définies dans le fichier Terraform principal.
Microsoft.DocumentDB/databaseAccounts : Crée un compte Azure Cosmos.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases : Crée une base de données Azure Cosmos.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers : Crée un conteneur Azure Cosmos.
Déployer via Terraform
- Enregistrez les fichiers Terraform en tant que main.tf, variables.tf et providers.tf sur votre ordinateur local.
- Se connecter au terminal via Azure CLI ou PowerShell
- Déployer via des commandes Terraform
- terraform init
- terraform plan
- terraform apply
Valider le déploiement
Utilisez le portail Azure, Azure CLI ou Azure PowerShell pour répertorier les ressources déployées dans le groupe de ressources.
az resource list --resource-group "your resource group name"
Nettoyer les ressources
Si vous prévoyez d’utiliser d’autres guides de démarrage rapide et tutoriels, vous pouvez conserver ces ressources. Quand vous n’avez plus besoin du groupe de ressources ni de ses ressources, utilisez le portail Azure, Azure CLI ou Azure PowerShell pour les supprimer.
az group delete --name "your resource group name"
Étapes suivantes
Dans ce guide de démarrage rapide, vous avez créé un compte, une base de données et un conteneur Azure Cosmos DB via Terraform et vous avez vérifié le déploiement. Pour en savoir plus sur Azure Cosmos DB et Terraform, consultez les articles ci-dessous.
- Consultez Vue d’ensemble d’Azure Cosmos DB.
- En savoir plus sur Terraform.
- En savoir plus sur le fournisseur Azure Terraform.
- Gérer Cosmos DB avec Terraform
- Vous tentez d’effectuer une planification de la capacité pour une migration vers Azure Cosmos DB ? Vous pouvez utiliser les informations sur votre cluster de bases de données existant pour la planification de la capacité.
- Si vous ne connaissez que le nombre de vCores et de serveurs présents dans votre cluster de bases de données existant, lisez Estimation des unités de requête en utilisant les vCores ou les processeurs virtuels.
- Si vous connaissez les taux de requêtes typiques de votre charge de travail de base de données actuelle, lisez Estimation des unités de requête à l’aide du planificateur de capacité Azure Cosmos DB.