Purpose
A web application which allows users to request and access custom virtual machines. Targeted use case: temporary VMs for one-time use, i.e. testing new configurations, operating systems, etc.
Details
- Uses libvirt, KVM, QEMU
- "Templates" are virtual machines created by hand with existing Linux virtual machine tools like virt-manager. There are two parts to templates: the installed system partition itself, and an XML description of the VM in the libvirt XML format.
- "Instances" are snapshots of the templates: a user can log in and select a template, and be assigned an instance of that template. Changes to the user's VM are not persistent.
v0.1
- Python CLI app that boots a pre-built VM, already known to virt-manager, via libvirt
v0.2
- Still in progress (2007-11-22)
- Python CLI app that takes a template, changes it's unique identifier and name, creates an LVM snapshot of the VMs disks, and dumps this new VM description into libvirt, and boots the newly created VM.
TODO: actually create LVM snapshots
v0.3
- Web frontend to v0.2
v0.4 and beyond
- Frontend to help in creating/maintaining templates
Unresolved design issues
- Expiry of virtual machines (how long should they last? when should they be cleaned up?)
- Validating RAM/disk space usage (how to stop users from bringing server to a grinding halt?)