Skip to content

Commit 6b18c11

Browse files
committed
fix-issue-NIC
1 parent 8b06888 commit 6b18c11

File tree

1 file changed

+36
-21
lines changed

1 file changed

+36
-21
lines changed

main.tf

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ locals {
2828
)
2929
}
3030

31+
# Compute primary and additional network interfaces (by device_index)
32+
locals {
33+
network_interfaces = var.network_interface != null ? {
34+
for k, v in var.network_interface : tostring(try(v.device_index, tonumber(k))) => v
35+
} : {}
36+
37+
primary_network_interface = try(local.network_interfaces["0"], null)
38+
additional_network_interfaces = { for k, v in local.network_interfaces : k => v if k != "0" }
39+
}
40+
3141
data "aws_ssm_parameter" "this" {
3242
count = local.create && var.ami == null ? 1 : 0
3343

@@ -166,15 +176,12 @@ resource "aws_instance" "this" {
166176

167177
monitoring = var.monitoring
168178

169-
dynamic "network_interface" {
170-
for_each = var.network_interface != null ? var.network_interface : {}
179+
dynamic "primary_network_interface" {
180+
for_each = var.network_interface != null && local.primary_network_interface != null ? [local.primary_network_interface] : []
171181

172182
content {
173-
delete_on_termination = network_interface.value.delete_on_termination
174-
device_index = coalesce(network_interface.value.device_index, network_interface.key)
175-
network_card_index = network_interface.value.network_card_index
176-
network_interface_id = network_interface.value.network_interface_id
177-
183+
delete_on_termination = primary_network_interface.value.delete_on_termination
184+
network_interface_id = primary_network_interface.value.network_interface_id
178185
}
179186
}
180187

@@ -356,15 +363,12 @@ resource "aws_instance" "ignore_ami" {
356363

357364
monitoring = var.monitoring
358365

359-
dynamic "network_interface" {
360-
for_each = var.network_interface != null ? var.network_interface : {}
366+
dynamic "primary_network_interface" {
367+
for_each = var.network_interface != null && local.primary_network_interface != null ? [local.primary_network_interface] : []
361368

362369
content {
363-
delete_on_termination = network_interface.value.delete_on_termination
364-
device_index = coalesce(network_interface.value.device_index, network_interface.key)
365-
network_card_index = network_interface.value.network_card_index
366-
network_interface_id = network_interface.value.network_interface_id
367-
370+
delete_on_termination = primary_network_interface.value.delete_on_termination
371+
network_interface_id = primary_network_interface.value.network_interface_id
368372
}
369373
}
370374

@@ -543,15 +547,12 @@ resource "aws_spot_instance_request" "this" {
543547

544548
monitoring = var.monitoring
545549

546-
dynamic "network_interface" {
547-
for_each = var.network_interface != null ? var.network_interface : {}
550+
dynamic "primary_network_interface" {
551+
for_each = var.network_interface != null && local.primary_network_interface != null ? [local.primary_network_interface] : []
548552

549553
content {
550-
delete_on_termination = network_interface.value.delete_on_termination
551-
device_index = try(network_interface.value.device_index, network_interface.key)
552-
network_card_index = network_interface.value.network_card_index
553-
network_interface_id = network_interface.value.network_interface_id
554-
554+
delete_on_termination = primary_network_interface.value.delete_on_termination
555+
network_interface_id = primary_network_interface.value.network_interface_id
555556
}
556557
}
557558

@@ -616,6 +617,20 @@ resource "aws_ec2_tag" "spot_instance" {
616617
value = each.value
617618
}
618619

620+
################################################################################
621+
# Additional Network Interface Attachments
622+
################################################################################
623+
624+
resource "aws_network_interface_attachment" "this" {
625+
for_each = local.create && var.network_interface != null ? local.additional_network_interfaces : {}
626+
627+
region = var.region
628+
629+
instance_id = local.instance_id
630+
network_interface_id = each.value.network_interface_id
631+
device_index = try(each.value.device_index, tonumber(each.key))
632+
}
633+
619634
################################################################################
620635
# EBS Volume(s)
621636
################################################################################

0 commit comments

Comments
 (0)