使用 Terraform random_id 创建多个未按预期工作的资源

Rog*_*rty 4 azure azure-storage terraform terraform-provider-azure

我正在尝试结合使用 random_id 属性和 count 元属性来创建多个具有唯一名称的 Azure 存储帐户。

配置代码:

# Create storage accounts

resource "random_id" "storage_account_name_unique" {
  byte_length = 8
}

resource "azurerm_storage_account" "storage" {
  count                    = "${var.storage_account_count}"
  name                     = "tfsta${lower(random_id.storage_account_name_unique.hex)}"
  resource_group_name      = "${azurerm_resource_group.rg.name}"
  location                 = "${azurerm_resource_group.rg.location}"
  account_kind             = "StorageV2"
  account_tier             = "Standard"
  access_tier              = "Hot"
  account_replication_type = "${var.account_replication_type}"

  network_rules {
    ip_rules                   = ["127.0.0.1"]
    virtual_network_subnet_ids = ["${azurerm_subnet.subnet.id}"] 
  }

  tags = "${var.tags}"
  }
Run Code Online (Sandbox Code Playgroud)

这段代码的问题:

  1. Terraform 仅生成一个 random_id 并将其用于在 terraform apply 操作期间创建的所有存储帐户实例。
  2. Terraform 被“愚弄”,认为它创建了多个存储帐户,但只创建了一个存储帐户

选定的 Terraform Apply 输出:

此输出显示 Terraform 认为它正在创建三个具有相同 random_id 的独立存储帐户。计划已成功应用,但在 Azure 中仅创建了一个存储帐户。

random_id.storage_account_name_unique: Creating...
  b64:         "" => "<computed>"
  b64_std:     "" => "<computed>"
  b64_url:     "" => "<computed>"
  byte_length: "" => "8"
  dec:         "" => "<computed>"
  hex:         "" => "<computed>"
random_id.storage_account_name_unique: Creation complete after 0s (ID: kYl9WvpTSso)

azurerm_storage_account.storage[2]: Creating...
  access_tier:                                           "" => "Hot"
  account_encryption_source:                             "" => "Microsoft.Storage"
  account_kind:                                          "" => "StorageV2"
  account_replication_type:                              "" => "LRS"
  account_tier:                                          "" => "Standard"
  enable_blob_encryption:                                "" => "true"
  enable_file_encryption:                                "" => "true"
  identity.#:                                            "" => "<computed>"
  location:                                              "" => "westus2"
  name:                                                  "" => "tfsta91897d5afa534aca"
  network_rules.#:                                       "" => "1"
  network_rules.0.bypass.#:                              "" => "<computed>"
  network_rules.0.ip_rules.#:                            "" => "1"
  network_rules.0.ip_rules.3619153832:                   "" => "127.0.0.1"
  network_rules.0.virtual_network_subnet_ids.#:          "" => "1"
  network_rules.0.virtual_network_subnet_ids.3223410521: "" => "/subscriptions/f6d69ee2-34d5-4ca8-a143-7a2fc1aeca55/resourceGroups/hdi-dev-rg/providers/Microsoft.Network/virtualNetworks/hdi-dev-vnet/subnets/hdinsight"
  primary_access_key:                                    "<sensitive>" => "<sensitive>"
  primary_blob_connection_string:                        "<sensitive>" => "<sensitive>"
  primary_blob_endpoint:                                 "" => "<computed>"
  primary_connection_string:                             "<sensitive>" => "<sensitive>"
  primary_file_endpoint:                                 "" => "<computed>"
  primary_location:                                      "" => "<computed>"
  primary_queue_endpoint:                                "" => "<computed>"
  primary_table_endpoint:                                "" => "<computed>"
  resource_group_name:                                   "" => "hdi-dev-rg"
  secondary_access_key:                                  "<sensitive>" => "<sensitive>"
  secondary_blob_connection_string:                      "<sensitive>" => "<sensitive>"
  secondary_blob_endpoint:                               "" => "<computed>"
  secondary_connection_string:                           "<sensitive>" => "<sensitive>"
  secondary_location:                                    "" => "<computed>"
  secondary_queue_endpoint:                              "" => "<computed>"
  secondary_table_endpoint:                              "" => "<computed>"
  tags.%:                                                "" => "3"
  tags.costcenter:                                       "" => "Unknown"
  tags.environment:                                      "" => "Dev"
  tags.project:                                          "" => "Unknown"
azurerm_storage_account.storage[1]: Creating...
  access_tier:                                           "" => "Hot"
  account_encryption_source:                             "" => "Microsoft.Storage"
  account_kind:                                          "" => "StorageV2"
  account_replication_type:                              "" => "LRS"
  account_tier:                                          "" => "Standard"
  enable_blob_encryption:                                "" => "true"
  enable_file_encryption:                                "" => "true"
  identity.#:                                            "" => "<computed>"
  location:                                              "" => "westus2"
  name:                                                  "" => "tfsta91897d5afa534aca"
  network_rules.#:                                       "" => "1"
  network_rules.0.bypass.#:                              "" => "<computed>"
  network_rules.0.ip_rules.#:                            "" => "1"
  network_rules.0.ip_rules.3619153832:                   "" => "127.0.0.1"
  network_rules.0.virtual_network_subnet_ids.#:          "" => "1"
  network_rules.0.virtual_network_subnet_ids.3223410521: "" => "/subscriptions/f6d69ee2-34d5-4ca8-a143-7a2fc1aeca55/resourceGroups/hdi-dev-rg/providers/Microsoft.Network/virtualNetworks/hdi-dev-vnet/subnets/hdinsight"
  primary_access_key:                                    "<sensitive>" => "<sensitive>"
  primary_blob_connection_string:                        "<sensitive>" => "<sensitive>"
  primary_blob_endpoint:                                 "" => "<computed>"
  primary_connection_string:                             "<sensitive>" => "<sensitive>"
  primary_file_endpoint:                                 "" => "<computed>"
  primary_location:                                      "" => "<computed>"
  primary_queue_endpoint:                                "" => "<computed>"
  primary_table_endpoint:                                "" => "<computed>"
  resource_group_name:                                   "" => "hdi-dev-rg"
  secondary_access_key:                                  "<sensitive>" => "<sensitive>"
  secondary_blob_connection_string:                      "<sensitive>" => "<sensitive>"
  secondary_blob_endpoint:                               "" => "<computed>"
  secondary_connection_string:                           "<sensitive>" => "<sensitive>"
  secondary_location:                                    "" => "<computed>"
  secondary_queue_endpoint:                              "" => "<computed>"
  secondary_table_endpoint:                              "" => "<computed>"
  tags.%:                                                "" => "3"
  tags.costcenter:                                       "" => "Unknown"
  tags.environment:                                      "" => "Dev"
  tags.project:                                          "" => "Unknown"
azurerm_storage_account.storage[0]: Creating...
  access_tier:                                           "" => "Hot"
  account_encryption_source:                             "" => "Microsoft.Storage"
  account_kind:                                          "" => "StorageV2"
  account_replication_type:                              "" => "LRS"
  account_tier:                                          "" => "Standard"
  enable_blob_encryption:                                "" => "true"
  enable_file_encryption:                                "" => "true"
  identity.#:                                            "" => "<computed>"
  location:                                              "" => "westus2"
  name:                                                  "" => "tfsta91897d5afa534aca"
  network_rules.#:                                       "" => "1"
  network_rules.0.bypass.#:                              "" => "<computed>"
  network_rules.0.ip_rules.#:                            "" => "1"
  network_rules.0.ip_rules.3619153832:                   "" => "127.0.0.1"
  network_rules.0.virtual_network_subnet_ids.#:          "" => "1"
  network_rules.0.virtual_network_subnet_ids.3223410521: "" => "/subscriptions/f6d69ee2-34d5-4ca8-a143-7a2fc1aeca55/resourceGroups/hdi-dev-rg/providers/Microsoft.Network/virtualNetworks/hdi-dev-vnet/subnets/hdinsight"
  primary_access_key:                                    "<sensitive>" => "<sensitive>"
  primary_blob_connection_string:                        "<sensitive>" => "<sensitive>"
  primary_blob_endpoint:                                 "" => "<computed>"
  primary_connection_string:                             "<sensitive>" => "<sensitive>"
  primary_file_endpoint:                                 "" => "<computed>"
  primary_location:                                      "" => "<computed>"
  primary_queue_endpoint:                                "" => "<computed>"
  primary_table_endpoint:                                "" => "<computed>"
  resource_group_name:                                   "" => "hdi-dev-rg"
  secondary_access_key:                                  "<sensitive>" => "<sensitive>"
  secondary_blob_connection_string:                      "<sensitive>" => "<sensitive>"
  secondary_blob_endpoint:                               "" => "<computed>"
  secondary_connection_string:                           "<sensitive>" => "<sensitive>"
  secondary_location:                                    "" => "<computed>"
  secondary_queue_endpoint:                              "" => "<computed>"
  secondary_table_endpoint:                              "" => "<computed>"
  tags.%:                                                "" => "3"
  tags.costcenter:                                       "" => "Unknown"
  tags.environment:                                      "" => "Dev"
  tags.project:                                          "" => "Unknown"
azurerm_storage_account.storage[0]: Creation complete after 21s (ID: /subscriptions/f6d69ee2-34d5-4ca8-a143-.../storageAccounts/tfsta91897d5afa534aca)
azurerm_storage_account.storage[2]: Creation complete after 22s (ID: /subscriptions/f6d69ee2-34d5-4ca8-a143-.../storageAccounts/tfsta91897d5afa534aca)
azurerm_storage_account.storage[1]: Creation complete after 23s (ID: /subscriptions/f6d69ee2-34d5-4ca8-a143-.../storageAccounts/tfsta91897d5afa534aca)
Run Code Online (Sandbox Code Playgroud)

Jam*_*den 5

您的问题是您使用了随机字符串,您只制作了一个字符串并在每个名称中重复使用了相同的字符串。如果您希望将随机字符串元素作为存储帐户名称的一部分,则需要多个随机字符串。下面的示例演示了在资源中使用和创建多个随机字符串。

resource "random_id" "storage_account_name_unique" {
  count = "${var.storage_account_count}"
  byte_length = 8
}

output "random"{
value=["${random_id.storage_account_name_unique.*.hex}"]
}

provider "random" {
  version="2.0"
}

resource "null_resource" "echo" {
  count = "${var.storage_account_count}"
  provisioner "local-exec" {     
    command = 
      "echo ${element(random_id.storage_account_name_unique.*.hex, count.index)}"
  }
}
Run Code Online (Sandbox Code Playgroud)

这给你:

null_resource.echo[0]: Creating...
null_resource.echo[1]: Creating...
null_resource.echo[0]: Provisioning with 'local-exec'...
null_resource.echo[1]: Provisioning with 'local-exec'...
null_resource.echo[1] (local-exec): Executing: ["cmd" "/C" "echo e5ddcf9fb82798f2"]
null_resource.echo[0] (local-exec): Executing: ["cmd" "/C" "echo ceb231a41c8cdb24"]
null_resource.echo[1] (local-exec): e5ddcf9fb82798f2
null_resource.echo[0] (local-exec): ceb231a41c8cdb24
null_resource.echo[1]: Creation complete after 0s (ID: 3289535031294242492)
null_resource.echo[0]: Creation complete after 0s (ID: 4611439113584915035)

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

Outputs:

random = [
    ceb231a41c8cdb24,
    e5ddcf9fb82798f2
]
Run Code Online (Sandbox Code Playgroud)