Partager via


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

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.

Déployer via Terraform

  1. Enregistrez les fichiers Terraform en tant que main.tf, variables.tf et providers.tf sur votre ordinateur local.
  2. Se connecter au terminal via Azure CLI ou PowerShell
  3. 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.