azurerm_storage_account 模块,带有可选的 azure_files_authentication

问题描述 投票:0回答:0

我为 Azure 存储帐户编写了此模块:

resource "azurerm_resource_group" "rg" {
  name     = var.ResourceGroupName
  location = var.RegionName
}

resource "azurerm_storage_account" "storage" {
  for_each            = var.storageAccounts
    name                     = lower(each.value.StorageAccountName)
    resource_group_name      = resource.azurerm_resource_group.rg.name
    location                 = resource.azurerm_resource_group.rg.location
    account_kind             = each.value.StorageAccountKind
    account_tier             = each.value.StorageAccountTier
    account_replication_type = each.value.StorageAccountReplicationType
    min_tls_version          = each.value.StorageAccountMinTLSVersion
    tags                     = each.value.tags
    azure_files_authentication {
      directory_type = var.storageAccounts.type
    }

  depends_on = [
    resource.azurerm_resource_group.rg
  ]
}

我的模块部分的变量有这个:

variable "ResourceGroupName" {}
variable "RegionName" {}
variable "storageAccounts" {
    type = map(object({
        StorageAccountName            = optional(string)
        StorageAccountTier            = optional(string)
        StorageAccountKind            = optional(string)
        StorageAccountReplicationType = optional(string)
        StorageAccountMinTLSVersion   = optional(string)
        tags                          = optional(map(string))
        azure_files_authentication    = optional(object({
            type       = optional(string)
    }))
    }))
}

这是我添加存储帐户的块:

storageAccounts = {
    yyy= {
        StorageAccountName                  = "yyy"
        StorageAccountTier                  = "Premium"
        StorageAccountKind                  = "FileStorage"
        StorageAccountReplicationType       = "LRS"
        StorageAccountMinTLSVersion         = "TLS1_2"
        tags = {
            yyy= "yyy"
        }
        azure_files_authentication = {
            type   = "AD"
        }
    }
    xxx= {
        StorageAccountName                  = "xxx"
        StorageAccountTier                  = "Standard"
        StorageAccountKind                  = "StorageV2"
        StorageAccountReplicationType       = "LRS"
        StorageAccountMinTLSVersion         = "TLS1_2"
        tags = {
            xxx= "xxx"
        }
    }
}

问题是,我需要将 azure_files_authentication 作为可选传递,因为第二个存储帐户没有使用它,但我尝试了许多不同的方法来引用该类型变量,但没有成功。

对于这个我的错误是:

Error: Missing map element

  on ../../../../Modules/StorageAccounts/main.tf line 17, in resource "azurerm_storage_account" "storage":
  17:       directory_type = var.storageAccounts.type
    ├────────────────
    │ var.storageAccounts is map of object with 2 elements

This map does not have an element with the key "type".

有人可以帮助我如何使用这个正确性吗?

提前致谢

我多次更改此模块块:

    azure_files_authentication {
      directory_type = var.storageAccounts.type
    }

没有运气。

我期望的是创建一个具有 AD 集成的存储帐户和一个不具有 AD 集成的存储帐户。

azure-storage terraform-provider-azure optional-parameters azure-rm terraform-modules
© www.soinside.com 2019 - 2024. All rights reserved.