#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"
}
}