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:
@@ -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]
|
||||||
}] : [{
|
}]
|
||||||
|
}]
|
||||||
|
}) : yamlencode({
|
||||||
|
version = 1
|
||||||
|
config = [{
|
||||||
|
type = "physical"
|
||||||
|
name = "ens18"
|
||||||
|
subnets = [{
|
||||||
type = "dhcp"
|
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
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user