Terraform忽略资源内嵌套块的Terraform条件值



我需要忽略blob属性,如果帐户类型是文件存储,我已经尝试使用每个动态,但它一直给出错误。

resource "azurerm_storage_account" "sa" {
name                      = var.name
location                  = var.location
resource_group_name       = var.resource_group_name
account_kind              = var.account_kind
account_tier              = var.account_tier
account_replication_type  = var.replication_type
min_tls_version           = "TLS1_2"
enable_https_traffic_only = true

blob_properties {
dynamic "ignore_filestorage" {
for_each = var.account_kind == FileStorage ? 0 : 1
delete_retention_policy {
days = var.blob_retention_days
}
container_delete_retention_policy {
days = var.container_retention_days
}
}
}

错误-块类型为"ignore_filestorage"不会在这里出现。错误-对资源类型的引用必须后跟至少一个属性访问,指定资源名称。

如果"account_kind"指定为"filestorage"在var.tf中,blob属性需要忽略。

我尝试使用动态,但不断得到错误,不能使用计数内嵌套块。

根据注释和资源文档,您可能需要这样的内容:

resource "azurerm_storage_account" "sa" {
name                      = var.name
location                  = var.location
resource_group_name       = var.resource_group_name
account_kind              = var.account_kind
account_tier              = var.account_tier
account_replication_type  = var.replication_type
min_tls_version           = "TLS1_2"
enable_https_traffic_only = true

dynamic "blob_properties" {
for_each = var.account_kind == "FileStorage" ? [] : [1]
content {
delete_retention_policy {
days = var.blob_retention_days
}
container_delete_retention_policy {
days = var.container_retention_days
}
}
}
}

for_each取一个集合,而不是一个数字。你不能给它传递值0或1。您需要传递给它一个空列表,或者一个您想要创建的大小的列表。

请花点时间看看文档,了解countfor_each之间的区别。

例子:

for_each = var.account_kind == FileStorage ? [] : [1]

如果var.account_kind == FileStorage将创建0个动态块,如果var.account_kind != FileStorage将创建1个动态块。

注意[1]中的值只是一个占位符,使列表的大小为1。该值可以是任何值,如["stackoverflow"]

相关内容

  • 没有找到相关文章

最新更新