[英]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.