63 lines
1.8 KiB
HCL
63 lines
1.8 KiB
HCL
resource "libvirt_domain" "domain" {
|
||
count = var.instance_count
|
||
name = "${var.vm_name}-${count.index}"
|
||
memory = var.memory
|
||
vcpu = var.vcpu
|
||
machine = "q35"
|
||
|
||
# The chipset q35, which does not support the IDE bus, does not work with the terraform-provider-libvirt cloud-init implementation,
|
||
# which creates an ISO attached to an IDE bus by default. Workaround is implemented
|
||
# https://github.com/dmacvicar/terraform-provider-libvirt/issues/1137#issuecomment-2592329846
|
||
# A cleaner solution might be this one :
|
||
# https://github.com/dmacvicar/terraform-provider-libvirt/pull/895#issuecomment-1911167872
|
||
|
||
xml {
|
||
xslt = file("${path.module}/q35-workaround.xslt")
|
||
}
|
||
|
||
# Only include cloudinit if enabled
|
||
cloudinit = var.enable_cloudinit ? libvirt_cloudinit_disk.commoninit[count.index].id : null
|
||
|
||
# ---- optional UEFI support ------------------------------------
|
||
# Firmware – only add the string when a path is supplied
|
||
firmware = local.detected_firmware
|
||
|
||
# NVRAM block – dynamic block that is evaluated once per VM
|
||
dynamic "nvram" {
|
||
for_each = (local.detected_firmware != null && local.detected_nvram != null) ? [1] : []
|
||
|
||
content {
|
||
file = "/var/lib/libvirt/qemu/nvram/${var.vm_name}-${count.index}${var.uefi_nvram_file_suffix}_VARS.fd"
|
||
template = local.detected_nvram
|
||
}
|
||
}
|
||
# ----------------------------------------------------------------
|
||
|
||
cpu {
|
||
mode = "host-passthrough"
|
||
}
|
||
|
||
disk {
|
||
volume_id = element(libvirt_volume.vm_disk.*.id, count.index)
|
||
scsi = "true"
|
||
}
|
||
|
||
console {
|
||
type = "pty"
|
||
target_port = "0"
|
||
target_type = "virtio"
|
||
}
|
||
|
||
video {
|
||
type = "virtio"
|
||
}
|
||
|
||
tpm {
|
||
backend_type = "emulator"
|
||
backend_version = "2.0"
|
||
}
|
||
|
||
network_interface {
|
||
network_name = "${var.vm_name}-network"
|
||
}
|
||
} |