Guia de início rápido - Criar um banco de dados e contêiner do Azure Cosmos DB usando o Terraform

APLICA-SE A: NoSQL

O Azure Cosmos DB é o banco de dados NoSQL rápido da Microsoft com APIs abertas para qualquer escala. Você pode usar o Azure Cosmos DB para criar e consultar rapidamente bancos de dados de chave/valor, bancos de dados de documentos e bancos de dados de gráficos. Sem um cartão de crédito ou uma assinatura do Azure, você pode configurar uma conta gratuita Experimente o Azure Cosmos DB. Este guia de início rápido se concentra no processo de implantações via Terraform para criar um banco de dados do Azure Cosmos e um contêiner dentro desse banco de dados. Mais tarde, você pode armazenar dados nesse contêiner.

Pré-requisitos

Uma assinatura do Azure ou uma conta de avaliação gratuita do Azure Cosmos DB

Terraform deve ser instalado no seu computador local. As instruções de instalação podem ser encontradas aqui.

Revise o arquivo Terraform

Os arquivos Terraform usados neste início rápido podem ser encontrados no repositório de amostras de terraform. Crie os três arquivos abaixo: providers.tf, main.tf e variables.tf. As variáveis podem ser definidas na linha de comando ou, alternativamente, com um arquivo terraforms.tfvars.

Arquivo Terraform do provedor

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 {}
}

Arquivo 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
}

Variáveis Terraform Arquivo

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."
  }
}

Três recursos do Cosmos DB são definidos no arquivo terraform principal.

Implante via terraform

  1. Salve os arquivos terraform como main.tf, variables.tf e providers.tf em seu computador local.
  2. Inicie sessão no seu terminal através da CLI do Azure ou do PowerShell
  3. Implantar por meio de comandos Terraform
    • terraform init |
    • planta terraform
    • aplicação terraform

Validar a implementação

Use o portal do Azure, a CLI do Azure ou o Azure PowerShell para listar os recursos implantados no grupo de recursos.

az resource list --resource-group "your resource group name"

Clean up resources (Limpar recursos)

Se você planeja continuar trabalhando com guias de início rápido e tutoriais subsequentes, convém deixar esses recursos no lugar. Quando não for mais necessário, use o portal do Azure, a CLI do Azure ou o Azure PowerShell para excluir o grupo de recursos e seus recursos.

az group delete --name "your resource group name"

Próximos passos

Neste início rápido, você criou uma conta do Azure Cosmos, um banco de dados e um contêiner via terraform e validou a implantação. Para saber mais sobre o Azure Cosmos DB e o Terraform, continue nos artigos abaixo.