A simple script to manage headless VMs
It is a tool to simplify the management of multiple headless VMs without a
graphical interface, using tools like ssh, sshfs, and rsync. The script
uses minimal QEMU arguments to avoid excessive CPU usage. If you want to use
Spice or other tools with QEMU, feel free to open a pull request to integrate
that into the script.
Ensure you have the following commands installed:
qemu-imgqemu-system-x86_64
Run:
$ make PREFIX=/home/USER/.local install The first time you run vms command, it will create a vms directory under
your home directory to store vm images and config files.
First, download the ISO image, for example, arch linux.
The following command will create a new image in the vms direcotry using qemu-img
with the specified size and generate a config file.
$ vms create arch 50G -f qcow2 -o nocow=on Read/Modify the config file in: /home/USER/vms/arch/config
Then you can boot from the ISO file:
$ vms boot arch /home/USER/download/arch.isoAfter installing, you can run this command whenever you want to start the VM:
$ vms start arch To stop the VM:
$ vms stop arch To list all VMs:
$ vms list By default, the script applies the following configurations to each new VM.
### Default vm configuration
smp=22
devices=
ram=12G
image_format=raw
nic=user
daemonize=off
cpu=host
ports=10022:22 8080:80
machine=
serial=none
bios=/usr/share/qemu/bios.bin
boot=menu=on
audiodev=
monitor=stdio
display=sdl
accel=kvm
These default configurations can be customized by modifying the config files for each vm.