【发布时间】:2022-01-11 21:14:09
【问题描述】:
我正在尝试部署一些创建多个 VM 的 terraform,然后定义一些负载平衡器规则,但我正在努力为第二个 for_each 获取正确的字符串格式
这部分
for_each = {for server in local.instances: server.instance_name => server}
在 aws_instance 块中工作得很好,但我需要然后迭代 serverconfig 中每个 VM 的 fwd_rules。我可以控制“配置”中的格式,所以如果只是为了能够做到这一点而获得正确的字符串格式,那就太好了。
我应该在这里设置什么?我尝试了很多不同的选项,toset、tolist、tomap、使用带有大括号、方括号等的 fwd_rules 的字符串格式,但我就是做错了。
dynamic "path_pattern" {
for_each = toset(each.value.fwd_rules)
地形代码:(简化)
configuration = [
{
"application_name" : "myapp",
"fwd_rules" : "{'/foo/*','/bar/*'}"
},
{
"application_name" : "myapp2",
"fwd_rules" : "{'/foo2/*','/bar2/*'}"
}]
locals {
serverconfig = [
for srv in var.configuration : [
for i in range(1, srv.no_of_instances+1) : {
instance_name = "${srv.application_name}"
fwd_rules = "${srv.fwd_rules}"
}
]
]
}
locals {
instances = flatten(local.serverconfig)
}
resource "aws_instance" "my-instance" {
for_each = {for server in local.instances: server.instance_name => server}
instance_name = each.value.instance_name
tags = {
Name = "${each.value.instance_name}"
}
}
resource "aws_lb_listener_rule" "myrule" {
for_each = {for server in local.instances: server.instance_name => server}
condition {
dynamic "path_pattern" {
for_each = toset(each.value.fwd_rules)
content {
values = [path_pattern.value]
}
}
}
}
【问题讨论】:
标签: terraform terraform-provider-aws terraform0.12+