терраформирование назначения IP-адреса экземпляра aws ec2

#amazon-web-services #amazon-ec2 #terraform #terraform-provider-aws

#amazon-веб-сервисы #amazon-ec2 #terraform #terraform-provider-aws

Вопрос:

У меня типичная проблема с terraform и aws. Мне нужно развернуть 26 экземпляров через terraform, но все они должны иметь IP-адрес в порядке увеличения.

например

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

Возможно ли это как-то достичь в terraform?

Комментарии:

1. @MarkB Вы абсолютно можете выбрать частный IP-адрес инстанса или ENI. Но другие части вашего комментария полезны, и здесь особенно важен пункт о подсетях / зонах доступности.

Ответ №1:

Ниже приведен пример того, как это сделать. Он просто создается для экземпляров с диапазоном ip от 172.31.64.100 до 172.31.64.104 (вы не можете использовать первые несколько номеров, поскольку они зарезервированы AWS).

Вам нужно будет настроить идентификатор подсети и начальный диапазон 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"
  }
}