terraform { required_providers { libvirt = { source = "dmacvicar/libvirt" } } } resource "libvirt_volume" "os" { name = "${var.name}.qcow2" pool = "disks" size = 1024 * 1024 * 1024 * var.storage base_volume_name = "debian-bookworm.qcow2" base_volume_pool = "images" lifecycle { replace_triggered_by = [ libvirt_cloudinit_disk.main.id ] } } resource "libvirt_cloudinit_disk" "main" { name = "${var.name}.iso" pool = "cloudinit" user_data = templatefile("${path.module}/files/cloud_init.cfg.tftpl", { hostname = var.name }) network_config = file("${path.module}/files/network_config.cfg") } resource "libvirt_domain" "main" { name = var.name memory = var.ram vcpu = 4 autostart = true disk { volume_id = libvirt_volume.os.id } network_interface { bridge = "bridgedmz" hostname = var.name } cloudinit = libvirt_cloudinit_disk.main.id lifecycle { replace_triggered_by = [ libvirt_cloudinit_disk.main.id ] } }