Давно собирался попробовать управлять виртуалками в libvirt через Terraform. Для этого существует провайдер multain/libvirt. Для начала создам виртуальную машину с двумя дисками.
terraform {
required_providers {
libvirt = {
source = "multani/libvirt"
version = "0.6.3-1+4"
}
}
}
provider "libvirt" {
uri = "qemu:///system"
}
variable "prefix" {
description = "Resource name prefix"
type = string
default = "terraform-"
}
resource "libvirt_volume" "boot" {
name = "${var.prefix}boot"
size = 20*1024*1024*1024
}
resource "libvirt_volume" "data" {
name = "${var.prefix}data"
size = 20*1024*1024*1024
}
resource "libvirt_domain" "default" {
name = "${var.prefix}default"
vcpu = 1
memory = 2048
disk {
file = "/var/lib/libvirt/images/debian-10.9.0-amd64-netinst.iso"
}
disk {
volume_id = libvirt_volume.boot.id
}
disk {
volume_id = libvirt_volume.data.id
}
boot_device {
dev = [ "hd", "cdrom"]
}
network_interface {
bridge = "dmz0"
}
}