Skip to content

Latest commit

 

History

History
65 lines (50 loc) · 3.2 KB

README.md

File metadata and controls

65 lines (50 loc) · 3.2 KB

VmChamp

Simple and fast creation of throwaway VMs on your local machine. Connect via SSH in just a few seconds.

✨ Features

  • Create throwaway VMs on your local machine and connect via SSH in just a few seconds.
  • Fast and easy to use.
  • Fast boot times because by default uses minimal cloud images.
  • On demand download of latest Debian, Ubuntu, Arch, Fedora, CentOS and Alma cloud images.
  • Shell completion.
  • Customizable cloud-init commands if needed.
  • Uses KVM, QEMU and libvirt.

🤔 Why?

Sometimes Docker containers are not sufficient for all use cases. For example when you want to load or unload kernel modules. Also when Systemd is needed to test unit files or install and test applications that require an init system. In this case a VM is often the better choice. Unfortunately it usually takes far too long to create a local VM for quick tests. Download ISO, create VM, run installer, network config, reboot, ssh login. This usually takes at least 5-15 minutes. VmChamp can create local VMs within seconds and then establish a network connection via SSH.

🔧 Prerequisites

Your local linux machine needs to support virtualization and KVM must be installed and working.

🚀 Usage

VmChamp run mytestvm
# or VmChamp run mytestvm --os debian11 --mem 256MB --disk 4GB

For shell completion put this in your ~.zshrc:

source <(VmChamp --completion zsh)
Usage:
  VmChamp [command] [options]

Options:
  --completion <completion>  generate shell completion. (zsh or bash)
  --version                  Show version information
  -?, -h, --help             Show help and usage information

Commands:
  run, start <name>              start a new VM [default: testvm]
  clean                          delete all vms and images
  remove, rm <name>              removes a vm [default: testvm]
  reboot, reset, restart <name>  force restarts a vm [default: testvm]
  ssh <name>                     connect to vm via ssh [default: testvm]
  list, ls, ps                   list all existing vms
  images, os                     get a list of all available os images