terraform { required_providers { libvirt = { source = "dmacvicar/libvirt" version = "0.6.14" } } } locals { state_disk_size_byte = 1073741824 * var.state_disk_size } resource "libvirt_domain" "instance_group" { name = "${var.role}-${count.index}" count = var.amount memory = var.memory vcpu = var.vcpus machine = var.machine tpm { backend_type = "emulator" backend_version = "2.0" } disk = [ { volume_id = element(libvirt_volume.boot_volume.*.id, count.index) scsi : true, // fix for https://github.com/dmacvicar/terraform-provider-libvirt/issues/728 block_device : null, file : null, url : null, wwn : null }, { volume_id = element(libvirt_volume.state_volume.*.id, count.index) // fix for https://github.com/dmacvicar/terraform-provider-libvirt/issues/728 block_device : null, file : null, scsi : null, url : null, wwn : null }, ] network_interface { network_id = var.network_id hostname = "${var.role}-${count.index}" addresses = [cidrhost(var.cidr, var.ip_range_start + count.index)] wait_for_lease = true } console { type = "pty" target_port = "0" } xml { xslt = file("modules/instance_group/domain.xsl") } } resource "libvirt_volume" "boot_volume" { name = "constellation-${var.role}-${count.index}-boot" count = var.amount pool = var.pool base_volume_id = var.boot_volume_id } resource "libvirt_volume" "state_volume" { name = "constellation-${var.role}-${count.index}-state" count = var.amount pool = var.pool size = local.state_disk_size_byte format = "qcow2" }