diff --git a/multiple/shared_modules/domain.tf b/multiple/shared_modules/domain.tf index 04e67f8..b2e50be 100644 --- a/multiple/shared_modules/domain.tf +++ b/multiple/shared_modules/domain.tf @@ -4,6 +4,26 @@ resource "libvirt_domain" "domain" { memory = var.memory vcpu = var.vcpu cloudinit = libvirt_cloudinit_disk.commoninit.id + + # ---- optional UEFI support ------------------------------------ + # Firmware – only add the string when a path is supplied + firmware = can(var.uefi_firmware) && length(var.uefi_firmware) > 0 ? var.uefi_firmware : null + + # NVRAM block – dynamic block that is evaluated once per VM + dynamic "nvram" { + # create the block once if a firmware path *and* a template were given + for_each = (can(var.uefi_firmware) && length(var.uefi_firmware) > 0 + && can(var.uefi_nvram_template) && length(var.uefi_nvram_template) > 0 + ) ? [1] : [] + + content { + # The NVRAM filename is per‑VM, but we can honour an optional suffix + file = "/var/lib/libvirt/qemu/nvram/${var.vm_name}-${count.index}${var.uefi_nvram_file_suffix}_VARS.fd" + template = var.uefi_nvram_template + } + } + # ---------------------------------------------------------------- + cpu { mode = "host-passthrough" } diff --git a/multiple/shared_modules/variables.tf b/multiple/shared_modules/variables.tf index 7b8b45d..6df61da 100644 --- a/multiple/shared_modules/variables.tf +++ b/multiple/shared_modules/variables.tf @@ -101,4 +101,34 @@ variable "dns_local_only" { description = "DNS requests only resolved by virtual network's DNS server" type = bool default = false +} + +variable "uefi_firmware" { + description = <