繁体   English   中英

如何使用 Terraform for_each 资源块和计数资源块

[英]How to use Terraform for_each resource block and count resource block

我有一个 azurerm_postgresql_flexible_server 资源使用 count 和 azurerm_postgresql_flexible_server_configuration 使用 fore 每个。 请找到以下代码。

config= [{  
"name" = shared_preload_libraries,
"values" = ["EXAMPLE1", "EXAMPLE2"]
},
{
"name" = "azure.extensions"
"values" = ["EXAMPLE1", "EXAMPLE2", "EXAMPLE3"]
}]

locals {
  flat_config = merge([
      for single_config in var.config: {
        for value in single_config.values: 
          "${single_config.name}-${value}" => {
              "name" = single_config.name
              "value" = value
          }
      }
    ]...)
}

下面是我的 for_each 资源

 resource "azurerm_postgresql_flexible_server_configuration" "example" {
  for_each  = local.flat_config
  name      = each.value.name
  server_id = azurerm_postgresql_flexible_server.example.id
  value     = each.value.value
}

目前我有两个 azurerm_postgresql_flexible_server 资源。 azurerm_postgresql_flexible_server.example[0] 和 azurerm_postgresql_flexible_server.example[1]。 您能否让我知道是否有可能包含一些替代选项,例如计数?

Splat 表达式不起作用。

如果要为azurerm_postgresql_flexible_server azurerm_postgresql_flexible_server_configuration需要多一层扁平化

locals {
  flat_config = merge(flatten([
      for single_config in var.config: [        
        for value in single_config.values: {
          for idx, server in azurerm_postgresql_flexible_server.example:
          "${single_config.name}-${value}-${idx}" => {
              "name" = single_config.name
              "value" = value
              "flexible_server" = server
          }
        }  
      ]
    ])...)
}

然后

 resource "azurerm_postgresql_flexible_server_configuration" "example" {
  for_each  = local.flat_config
  name      = each.value.name
  server_id = each.value.flexible_server.id
  value     = each.value.value
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM