terraform: fix cloud-init conditional type inconsistency

Fix OpenTofu error where static IP and DHCP branches had different object
structures in the subnets array. Move conditional to network_config level
so both branches return complete, consistent yamlencode() results.

Error was: "The true and false result expressions must have consistent types"

Solution: Make network_config itself conditional rather than the subnets
array, ensuring both branches return the same type (string from yamlencode).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-01 16:54:33 +01:00
parent 1f1829dc2f
commit fca50562c3

View File

@@ -25,27 +25,34 @@ resource "proxmox_cloud_init_disk" "ci" {
: ""} : ""}
EOT EOT
# Network configuration - static IP or DHCP # Network configuration - static IP or DHCP
network_config = yamlencode({ network_config = each.value.ip != null ? yamlencode({
version = 1 version = 1
config = [{ config = [{
type = "physical" type = "physical"
name = "ens18" name = "ens18"
subnets = each.value.ip != null ? [{ subnets = [{
type = "static" type = "static"
address = each.value.ip address = each.value.ip
gateway = each.value.gateway gateway = each.value.gateway
dns_nameservers = split(" ", each.value.nameservers) dns_nameservers = split(" ", each.value.nameservers)
dns_search = [each.value.search_domain] dns_search = [each.value.search_domain]
}] : [{ }]
type = "dhcp"
}] }]
}] }) : yamlencode({
}) version = 1
config = [{
type = "physical"
name = "ens18"
subnets = [{
type = "dhcp"
}]
}]
})
# Instance metadata # Instance metadata
meta_data = yamlencode({ meta_data = yamlencode({
instance_id = sha1(each.key) instance_id = sha1(each.key)
local-hostname = each.key local-hostname = each.key
}) })
} }