【发布时间】:2021-12-02 02:29:57
【问题描述】:
我有一长串 ACL 规则,并试图通过迭代它们来生成 aws_network_acl。规则在我的模块中的 locals.tf 文件中,以使 main.tf 更整洁,看起来像这样
locals.tf
locals {
webapp = [{
"protocol" = "tcp"
"rule_no" = 100
"action" = "allow"
"from_port" = 22
"to_port" = 22
},
{
"protocol" = "tcp"
"rule_no" = 110
"action" = "allow"
"from_port" = 60111
"to_port" = 60111
},
{
"protocol" = "tcp"
"rule_no" = 120
"action" = "allow"
"from_port" = 3243
"to_port" = 3243
},
{
"protocol" = "tcp"
"rule_no" = 130
"action" = "allow"
"from_port" = 6379
"to_port" = 6379
},
{
"protocol" = "tcp"
"rule_no" = 140
"action" = "allow"
"from_port" = 50123
"to_port" = 50123
},
{
"protocol" = "tcp"
"rule_no" = 150
"action" = "allow"
"from_port" = 50432
"to_port" = 50432
},
{
"protocol" = "tcp"
"rule_no" = 160
"action" = "allow"
"from_port" = 3306
"to_port" = 3306
},
{
"protocol" = "tcp"
"rule_no" = 170
"action" = "allow"
"from_port" = 50001
"to_port" = 50001
},
{
"protocol" = "tcp"
"rule_no" = 180
"action" = "allow"
"from_port" = 50010
"to_port" = 50015
},
{
"protocol" = "tcp"
"rule_no" = 190
"action" = "allow"
"from_port" = 50650
"to_port" = 50660
}
]
}
(还有更多,但为简洁起见。
在我的模块的 main.tf 中,我想遍历每个,创建一个 ACL
resource "aws_network_acl" "webapp" {
vpc_id = data.aws_vpc.posttrade-vpc.id
for_each = {for idx, query in locals.posttrade: idx => query}
egress = [
protocol = each.value.protocol
rule_no = each.value.rule_no
action = "allow"
from_port = each.value.from_port
to_port = each.value.to_port
]
}
但得到错误
Missing item separator: Expected a comma to mark the beginning of the next item.
是否可以从本地文件或变量映射中执行此操作?
【问题讨论】:
-
你看到我的回答@CEamonn 了吗?成功了吗?
-
@JuanFontes 就是这样,感谢。
标签: terraform terraform-provider-aws