Terraform查找子网中可用的IP地址

Terraform查找子网中可用的IP地址,terraform,amazon-vpc,terraform-provider-aws,subnet,terraform0.12+,Terraform,Amazon Vpc,Terraform Provider Aws,Subnet,Terraform0.12+,我们一次就提供了一组相当大的服务器(每部署一个环境57台)。我们每个子网得到的IP地址是32,所以每个AWS帐户总共有96个IP,我想有效地利用它 我们使用这个元素(split(“,”,local.ec2_subnet),count.index)在子网之间使用IP轮换 比如说因为或随机终止实例。我们离开时,96个IP中有57个IP,但在子网中分布不均匀。 子网-1a:7 子网-1b:25 子网-1c:25 现在,当我准备下一套时。terraform失败,因为子网中的IP地址不可用。它是轮流分配的

我们一次就提供了一组相当大的服务器(每部署一个环境57台)。我们每个子网得到的IP地址是32,所以每个AWS帐户总共有96个IP,我想有效地利用它

  • 我们使用这个元素(split(“,”,local.ec2_subnet),count.index)在子网之间使用IP轮换
  • 比如说因为或随机终止实例。我们离开时,96个IP中有57个IP,但在子网中分布不均匀。 子网-1a:7 子网-1b:25 子网-1c:25
  • 现在,当我准备下一套时。terraform失败,因为子网中的IP地址不可用。它是轮流分配的。(无AWS反馈)
  • 是否有更好的方法了解具有可用IP地址的子网并相应地分配它
  • @ydaetskcoR为再生产添加代码: 3种类型的服务器:只需创建下面提到的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)
    

    现在有了以上Ip地址的可用性,如果我提供接下来的57个节点,在7个EC2之后,子网1a将失败(12将因IP地址不可用而失败,但实际上在3个子网中有57个IP地址可用。希望此信息足以复制。

    可能先尝试使用数据源(aws\u subnet\u ID)动态获取相应的子网使用“可用ip地址计数”筛选器,然后将该子网的id传递到配置模块


    请您编辑您的问题,将一些地形代码作为一个示例,以显示您正在尝试什么,以及您如何在AZs中实现这种差异?