【问题标题】:terraform aws ec2 instance ip address assignmentterraform aws ec2 实例 ip 地址分配
【发布时间】:2021-04-19 12:41:16
【问题描述】:

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

例如

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

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

【问题讨论】:

  • @MarkB 您绝对可以选择实例或ENI的私有IP地址。但是您评论的其他部分很有用,关于子网/可用区的观点在这里尤为重要。

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


【解决方案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"
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2014-03-23
    • 2022-07-29
    • 2012-07-17
    • 2021-02-18
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多