我为 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 集成的存储帐户。