【发布时间】:2020-12-16 22:23:31
【问题描述】:
我有一个场景,我需要创建多个 EC2 实例,它们是集群的一部分。这些主机必须可以在特定端口上相互访问,并且需要附加两个大小为 16GB 和 700GB 的 ebs_volumes。 我的 variable.tf 的片段如下所示:-
variable "instances" {
default = {
instance_name = "a"
tcp_ports = ["53","22","2022","80","443"]
udp_ports = ["53","67","68","123","161","162","500"]
"xvdf" = "16"
"xvdg" = "700"
}
}
我正在努力让这个映射与我的 TF 脚本一起工作:-
resource "aws_security_group_rule" "tcp_ingress" {
for_each = {
for inst in local.instances : inst.tcp_ports => {
for i in inst: i.tcp_ports => i
}
}
type = "ingress"
from_port = each.value.tcp_ports
to_port = each.value.tcp_ports
protocol = "tcp"
cidr_blocks = [ for i in aws_instance.instance: format("%s/32", i.private_ip ) ]
security_group_id = aws_security_group.ha-sg.id
}
有没有办法可以遍历端口并形成安全组规则。
【问题讨论】:
-
你能澄清一下你实际使用的是什么吗?在您的 for_each 中,您有
local.instances这将是一个列表,但您提供的variable "instances"不是列表,而是地图。 -
应该是这样的。
for_each = { for inst in var.instances : inst.tcp_ports => { for i in inst: i.tcp_ports => i } }
标签: terraform terraform-provider-aws terraform0.12+