terraform { required_version = ">= 0.13" required_providers { libvirt = { source = "dmacvicar/libvirt" version = "0.8.3" } } } provider "libvirt" { uri = "qemu:///system" } resource "libvirt_pool" "ubuntu-bios" { name = "ubuntu-bios" type = "dir" target { path = "/tmp/ubuntu-bios" } } resource "libvirt_volume" "ubuntu-bios" { name = "ubuntu-bios-${count.index}" pool = libvirt_pool.ubuntu-bios.name source = "/var/lib/libvirt/images/noble-server-cloudimg-amd64.img" format = "qcow2" count = 1 } resource "libvirt_cloudinit_disk" "commoninit" { name = "commoninit.iso" user_data = templatefile("${path.module}/cloud_init.yaml", {}) } resource "libvirt_domain" "domain" { count = 1 name = "ubuntu-cloud-server-2404-${count.index}" memory = "4092" vcpu = 2 cloudinit = libvirt_cloudinit_disk.commoninit.id cpu { mode = "host-model" } disk { volume_id = element(libvirt_volume.ubuntu-bios.*.id, count.index) } console { type = "pty" target_port = "0" target_type = "virtio" } video { type = "virtio" } tpm { backend_type = "emulator" backend_version = "2.0" } network_interface { network_name = "default" } }