From 2f73fa933fae79ac23eb9f9ca22d6f3e799441ce Mon Sep 17 00:00:00 2001 From: lonegunmanb Date: Wed, 15 Mar 2023 08:49:16 +0800 Subject: [PATCH] Fix concurrent error in cosmosdb example (#191) * fix concurrent error in cosmosdb example * change to random_string to reduce the collision rate * fix 101-cosmos-db-free-tier account name too long issue --------- Co-authored-by: zjhe --- quickstart/101-cosmos-db-aad-rbac/main.tf | 19 +++++++++++++++++-- quickstart/101-cosmos-db-aad-rbac/outputs.tf | 4 ++++ .../101-cosmos-db-aad-rbac/variables.tf | 2 +- .../101-cosmos-db-analyticalstore/main.tf | 15 ++++++++++++++- .../101-cosmos-db-analyticalstore/outputs.tf | 4 ++++ .../variables.tf | 2 +- quickstart/101-cosmos-db-autoscale/main.tf | 15 ++++++++++++++- quickstart/101-cosmos-db-autoscale/outputs.tf | 4 ++++ .../101-cosmos-db-autoscale/variables.tf | 2 +- quickstart/101-cosmos-db-free-tier/main.tf | 2 +- quickstart/101-cosmos-db-free-tier/outputs.tf | 4 ++++ .../101-cosmos-db-manualscale/outputs.tf | 4 ++++ .../outputs.tf | 4 ++++ 13 files changed, 73 insertions(+), 8 deletions(-) diff --git a/quickstart/101-cosmos-db-aad-rbac/main.tf b/quickstart/101-cosmos-db-aad-rbac/main.tf index 06bc93dc..b26a2be9 100644 --- a/quickstart/101-cosmos-db-aad-rbac/main.tf +++ b/quickstart/101-cosmos-db-aad-rbac/main.tf @@ -9,8 +9,21 @@ resource "azurerm_resource_group" "example" { location = var.location } +resource "random_string" "db_account_name" { + count = var.cosmosdb_account_name == null ? 1 : 0 + + length = 20 + upper = false + special = false + numeric = false +} + +locals { + cosmosdb_account_name = try(random_string.db_account_name[0].result, var.cosmosdb_account_name) +} + resource "azurerm_cosmosdb_account" "example" { - name = var.cosmosdb_account_name + name = local.cosmosdb_account_name location = var.cosmosdb_account_location resource_group_name = azurerm_resource_group.example.name offer_type = "Standard" @@ -74,7 +87,9 @@ resource "azurerm_cosmosdb_sql_role_definition" "example" { resource_group_name = azurerm_resource_group.example.name account_name = azurerm_cosmosdb_account.example.name type = "CustomRole" - assignable_scopes = ["/subscriptions/${data.azurerm_client_config.current.subscription_id}/resourceGroups/${azurerm_resource_group.example.name}/providers/Microsoft.DocumentDB/databaseAccounts/${azurerm_cosmosdb_account.example.name}"] + assignable_scopes = [ + "/subscriptions/${data.azurerm_client_config.current.subscription_id}/resourceGroups/${azurerm_resource_group.example.name}/providers/Microsoft.DocumentDB/databaseAccounts/${azurerm_cosmosdb_account.example.name}" + ] permissions { data_actions = ["Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read"] diff --git a/quickstart/101-cosmos-db-aad-rbac/outputs.tf b/quickstart/101-cosmos-db-aad-rbac/outputs.tf index 7f78abd8..aedf817c 100644 --- a/quickstart/101-cosmos-db-aad-rbac/outputs.tf +++ b/quickstart/101-cosmos-db-aad-rbac/outputs.tf @@ -4,4 +4,8 @@ output "cosmosdb_account_id" { output "cosmosdb_sql_database_id" { value = azurerm_cosmosdb_sql_database.example.id +} + +output "cosmosdb_account_name" { + value = azurerm_cosmosdb_account.example.name } \ No newline at end of file diff --git a/quickstart/101-cosmos-db-aad-rbac/variables.tf b/quickstart/101-cosmos-db-aad-rbac/variables.tf index 7bf21f8c..db76f65d 100644 --- a/quickstart/101-cosmos-db-aad-rbac/variables.tf +++ b/quickstart/101-cosmos-db-aad-rbac/variables.tf @@ -12,7 +12,7 @@ variable "location" { variable "cosmosdb_account_name" { type = string - default = "default-account-name" + default = null description = "Cosmos db account name" } diff --git a/quickstart/101-cosmos-db-analyticalstore/main.tf b/quickstart/101-cosmos-db-analyticalstore/main.tf index 82701870..e800760b 100644 --- a/quickstart/101-cosmos-db-analyticalstore/main.tf +++ b/quickstart/101-cosmos-db-analyticalstore/main.tf @@ -3,8 +3,21 @@ resource "azurerm_resource_group" "example" { location = var.location } +resource "random_string" "db_account_name" { + count = var.cosmosdb_account_name == null ? 1 : 0 + + length = 20 + upper = false + special = false + numeric = false +} + +locals { + cosmosdb_account_name = try(random_string.db_account_name[0].result, var.cosmosdb_account_name) +} + resource "azurerm_cosmosdb_account" "example" { - name = var.cosmosdb_account_name + name = local.cosmosdb_account_name location = var.cosmosdb_account_location resource_group_name = azurerm_resource_group.example.name offer_type = "Standard" diff --git a/quickstart/101-cosmos-db-analyticalstore/outputs.tf b/quickstart/101-cosmos-db-analyticalstore/outputs.tf index 7f78abd8..aedf817c 100644 --- a/quickstart/101-cosmos-db-analyticalstore/outputs.tf +++ b/quickstart/101-cosmos-db-analyticalstore/outputs.tf @@ -4,4 +4,8 @@ output "cosmosdb_account_id" { output "cosmosdb_sql_database_id" { value = azurerm_cosmosdb_sql_database.example.id +} + +output "cosmosdb_account_name" { + value = azurerm_cosmosdb_account.example.name } \ No newline at end of file diff --git a/quickstart/101-cosmos-db-analyticalstore/variables.tf b/quickstart/101-cosmos-db-analyticalstore/variables.tf index 1a29addc..44ebac8d 100644 --- a/quickstart/101-cosmos-db-analyticalstore/variables.tf +++ b/quickstart/101-cosmos-db-analyticalstore/variables.tf @@ -12,7 +12,7 @@ variable "location" { variable "cosmosdb_account_name" { type = string - default = "default-account-name" + default = null description = "Cosmos db account name" } diff --git a/quickstart/101-cosmos-db-autoscale/main.tf b/quickstart/101-cosmos-db-autoscale/main.tf index 7b88ebeb..fc807e91 100644 --- a/quickstart/101-cosmos-db-autoscale/main.tf +++ b/quickstart/101-cosmos-db-autoscale/main.tf @@ -3,8 +3,21 @@ resource "azurerm_resource_group" "example" { location = var.location } +resource "random_string" "db_account_name" { + count = var.cosmosdb_account_name == null ? 1 : 0 + + length = 20 + upper = false + special = false + numeric = false +} + +locals { + cosmosdb_account_name = try(random_string.db_account_name[0].result, var.cosmosdb_account_name) +} + resource "azurerm_cosmosdb_account" "example" { - name = var.cosmosdb_account_name + name = local.cosmosdb_account_name location = var.cosmosdb_account_location resource_group_name = azurerm_resource_group.example.name offer_type = "Standard" diff --git a/quickstart/101-cosmos-db-autoscale/outputs.tf b/quickstart/101-cosmos-db-autoscale/outputs.tf index eeb83014..db03821b 100644 --- a/quickstart/101-cosmos-db-autoscale/outputs.tf +++ b/quickstart/101-cosmos-db-autoscale/outputs.tf @@ -4,4 +4,8 @@ output "cosmosdb_account_id" { output "cosmosdb_sql_database_id" { value = azurerm_cosmosdb_sql_database.main.id +} + +output "cosmosdb_account_name" { + value = azurerm_cosmosdb_account.example.name } \ No newline at end of file diff --git a/quickstart/101-cosmos-db-autoscale/variables.tf b/quickstart/101-cosmos-db-autoscale/variables.tf index 55eab6ee..ef0716e6 100644 --- a/quickstart/101-cosmos-db-autoscale/variables.tf +++ b/quickstart/101-cosmos-db-autoscale/variables.tf @@ -12,7 +12,7 @@ variable "location" { variable "cosmosdb_account_name" { type = string - default = "default-cosmosdb-user" + default = null description = "Cosmos db account name" } diff --git a/quickstart/101-cosmos-db-free-tier/main.tf b/quickstart/101-cosmos-db-free-tier/main.tf index be34548e..a6412bee 100644 --- a/quickstart/101-cosmos-db-free-tier/main.tf +++ b/quickstart/101-cosmos-db-free-tier/main.tf @@ -4,7 +4,7 @@ resource "azurerm_resource_group" "example" { } resource "azurerm_cosmosdb_account" "example" { - name = "${random_pet.prefix.id}-cosmosdb-account" + name = random_pet.prefix.id location = var.cosmosdb_account_location resource_group_name = azurerm_resource_group.example.name offer_type = "Standard" diff --git a/quickstart/101-cosmos-db-free-tier/outputs.tf b/quickstart/101-cosmos-db-free-tier/outputs.tf index eeb83014..db03821b 100644 --- a/quickstart/101-cosmos-db-free-tier/outputs.tf +++ b/quickstart/101-cosmos-db-free-tier/outputs.tf @@ -4,4 +4,8 @@ output "cosmosdb_account_id" { output "cosmosdb_sql_database_id" { value = azurerm_cosmosdb_sql_database.main.id +} + +output "cosmosdb_account_name" { + value = azurerm_cosmosdb_account.example.name } \ No newline at end of file diff --git a/quickstart/101-cosmos-db-manualscale/outputs.tf b/quickstart/101-cosmos-db-manualscale/outputs.tf index eeb83014..db03821b 100644 --- a/quickstart/101-cosmos-db-manualscale/outputs.tf +++ b/quickstart/101-cosmos-db-manualscale/outputs.tf @@ -4,4 +4,8 @@ output "cosmosdb_account_id" { output "cosmosdb_sql_database_id" { value = azurerm_cosmosdb_sql_database.main.id +} + +output "cosmosdb_account_name" { + value = azurerm_cosmosdb_account.example.name } \ No newline at end of file diff --git a/quickstart/101-cosmos-db-serverside-functionality/outputs.tf b/quickstart/101-cosmos-db-serverside-functionality/outputs.tf index eeb83014..db03821b 100644 --- a/quickstart/101-cosmos-db-serverside-functionality/outputs.tf +++ b/quickstart/101-cosmos-db-serverside-functionality/outputs.tf @@ -4,4 +4,8 @@ output "cosmosdb_account_id" { output "cosmosdb_sql_database_id" { value = azurerm_cosmosdb_sql_database.main.id +} + +output "cosmosdb_account_name" { + value = azurerm_cosmosdb_account.example.name } \ No newline at end of file