我有一个创建多个 EC2 实例的 terraform 模板。然后,我在 AWS 控制台中创建了一些 Elastic Network 接口,并将它们作为本地人添加到 terraform 模板中。现在,我想将适当的 ENI 映射到实例,因此我添加了局部变量和变量,如下所示。
locals {
instance_ami = {
A = "ami-11111"
B = "ami-22222"
C = "ami-33333"
D = "ami-4444"
}
}
variable "instance_eni" {
description = "Pre created Network Interfaces"
default = [
{
name = "A"
id = "eni-0a15890a6f567f487"
},
{
name = "B"
id = "eni-089a68a526af5775b"
},
{
name = "C"
id = "eni-09ec8ad891c8e9d91"
},
{
name = "D"
id = "eni-0fd5ca23d3af654a9"
}
]
}
resource "aws_instance" "instance" {
for_each = local.instance_ami
ami = each.value
instance_type = var.instance_type
key_name = var.keypair
root_block_device {
delete_on_termination = true
volume_size = 80
volume_type = "gp2"
}
dynamic "network_interface" {
for_each = [for eni in var.instance_eni : {
eni_id = eni.id
}]
content {
device_index = 0
network_interface_id = network_interface.value.eni_id
delete_on_termination = false
}
}
}
我收到以下错误:
错误:启动源实例时出错:InvalidParameterValue:每个网络接口都需要唯一的设备索引。状态码:400,请求 ID:4a482753-bddc-4fc3-90f4-2f1c5e2472c7
我认为 terraform 很难将所有 4 个 ENI 仅附加到单个实例。应该怎么做才能将 ENI 附加到单个实例?