我们一次性配置了相当多的服务器(每个部署环境每个环境有57个)。我们每个子网获得的IP地址是32个,每个AWS账户共有96个IP,我想有效地利用它。
@ydaetskcoR添加用于重新生成的代码: 三种类型的服务器:只需创建以下提到的1 + 8 + 48 = 57 EC2。
resource "aws_instance" "gs_instance" {
count = 1
subnet_id = element(split(",",local.ec2_subnet),2)
. . .
}
resource "aws_instance" "Head_instance" {
count = 8
subnet_id = element(split(",",local.ec2_subnet),2)
. . .
}
resource "aws_instance" "compute_instance" {
count = 48
subnet_id = element(split(",",local.ec2_subnet),2)
. . .
}
说分布如下表。并根据它们所在的子网终止其中的少数几个。这样您就可以获得可用IP地址的数量
Subnet-1a(32) Subnet-1b(32) Subnet-1c(32)
provision 32-19(used)=13 32-19(used)=13 32-19(used)=13
Termination 6=(available 7) 12=(available 25) 12=(available 25)
如果我提供下一个57个节点,则具有上述Ip地址的可用性,在7个EC2之后,子网1a将会失败(由于IP地址不可用,所以12个将失败,但是实际上在3个子网中有57个Ip地址可用希望此信息足以复制。
答案 0 :(得分:2)
也许首先尝试使用“ available-ip-address-count”过滤器使用数据源(aws_subnet_ids)动态获取适当的子网,然后将该子网的ID传递到配置模块中。
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/subnet_ids https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSubnets.html