This guide will help you set up a virtual machine using QEMU/KVM with libvirt through Terraform.
- Ubuntu 24.10 with QEMU, KVM, and libvirt installed
- Terraform v1.10.5 installed
terraform-provider-libvirt(dmacvicar/libvirt) plugin installed
To avoid permission denied errors when using Terraform with libvirt, modify the /etc/libvirt/qemu.conf file:
sudo nano /etc/libvirt/qemu.confFind the following line:
# security_driver = "selinux"Change it to:
security_driver = "none"Then restart libvirt:
sudo systemctl restart libvirtdIf you have a predefined Terraform configuration, clone the repository:
git clone https://github.com/ArmanTaheriGhaleTaki/terraform-libvirt-sample.git
cd terraform-libvirt-sampleRun the following command to initialize the Terraform working directory:
terraform initBefore applying the configuration, validate and check the execution plan:
terraform validate
terraform planOnce validated, apply the configuration to create the virtual machine:
terraform apply -auto-approveTo customize your VM’s initialization process, update the Cloud-Init configuration according to your needs. Modify user-data and meta-data files accordingly.
If you configure a static IP for the VM, Terraform will not terminate successfully and will keep retrying endlessly. However, this is expected behavior, and you can safely interrupt the process and SSH into the server manually without issues.
If you need to remove the VM, use:
terraform destroy -auto-approveSpecial thanks to Molla Salehi (GitHub: mm3906078) for contributions and guidance.