我的要求是我需要获取vpc-foo和vpc-bar的 CIDR 地址并传递给资源“aws_security_group_rule”“ingress”
我尝试使用以下代码:
- data "aws_vpcs" -> 获取给定 VPC 的 ID
- 数据“aws_vpc”-> 使用 VPC id 制作一个列表
- 资源“aws_security_group_rule”“入口”-> 将 VPC CIRD 作为入口传递
variable "list_of_vps"{
type = "list"
default = ["vpc-foo", "vpc-bar"]
}
variable "sg_name" {
default = "sg-test"
}
data "aws_vpcs" "get_vpc"{
count = "$length(var.list_of_vps)"
filter {
name = "tag:Name"
values = ["vpc-${element(var.list_of_vps, count.index)}"]
}
}
data "aws_vpc" "get_vpc_ids" {
count = "${length(data.aws_vpcs.get_vpc.ids)}"
id = "${tolist(data.aws_vpcs.prod.ids)[count.index]}"
}
resource "aws_security_group_rule" "ingress" {
count = "${length(var.list_of_vps)}"
type = "ingress"
from_port = 22
to_port = 22
protocol = "TCP"
cidr_blocks = ["${element(data.aws_vpc.get_vpc_ids.*.cidr_block, count.index)}"]
security_group_id = "${var.sg_name}
}
有人可以帮忙吗?