terraform aws ec2实例ip地址分配
terraform aws ec2 instance ip address assignment
我有一个典型的 terraform 和 aws 问题。我必须通过 terraform 部署 26 个实例,但它们都应该具有递增顺序的 IP 地址。
例如
instance 1: 0.0.0.1
instance 2: 0.0.0.2
instance 3: 0.0.0.3
是否有可能以某种方式在 terraform 中实现?
在下方,您可以找到有关如何操作的示例。它只是为 IP 范围从 172.31.64.100
到 172.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"
}
}
我有一个典型的 terraform 和 aws 问题。我必须通过 terraform 部署 26 个实例,但它们都应该具有递增顺序的 IP 地址。
例如
instance 1: 0.0.0.1
instance 2: 0.0.0.2
instance 3: 0.0.0.3
是否有可能以某种方式在 terraform 中实现?
在下方,您可以找到有关如何操作的示例。它只是为 IP 范围从 172.31.64.100
到 172.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"
}
}