terraform aws ec2 实例 IP 地址分配

时间:2021-01-14 13:29:59

标签: amazon-web-services amazon-ec2 terraform terraform-provider-aws

我对 terraform 和 aws 有一个典型的问题。我必须通过 terraform 部署 26 个实例,但它们都应该具有递增顺序的 ip 地址。

例如

instance 1: 0.0.0.1
instance 2: 0.0.0.2
instance 3: 0.0.0.3

是否有可能以某种方式在 terraform 中实现?

1 个答案:

答案 0 :(得分:1)

在下面,您可以找到有关如何操作的示例。它只是为 ip 范围从 172.31.64.100172.31.64.104 的实例创建(您不能使用前几个数字,因为它们是由 AWS 保留的)。

您必须将我在示例中使用的子网 ID 和初始 IP 范围调整到您的子网。您还必须确保不使用这些 IP 地址。 AWS 已经可以将它们用于您的 VPC、现有实例或其他服务中的负载平衡。如果此范围内的任何 IP 地址已被占用,则会失败。

locals {
  ip_range = [for val in range(100, 104): "172.31.64.${val}"]
}

resource "aws_network_interface" "foo" {

  for_each    = toset(local.ip_range)

  subnet_id   = "subnet-b64b8988"
  
  private_ips = [each.key]

  tags = {
    Name = "primary_network_interface"
  }
}

resource "aws_instance" "web" {

  for_each      = toset(local.ip_range)

  ami           = data.aws_ami.ubuntu.id
  instance_type = "t2.micro"
  
  network_interface {
    network_interface_id = aws_network_interface.foo[each.key].id
    device_index         = 0
  }  

  tags = {
    Name = "HelloWorld"
  }
}