The smart virtual machines manager (star the project if you find it useful)
Table of Contents:
What is Vermin
Vermin is a smart, simple and powerful command line tool for Linux, Windows and macOS. It's designed for developers/tester and others working in IT who want a fresh VM environment with a single command. It uses VirtualBox to run the VM. Vermin will fetch images on your behalf.
You can look to Vermina as a modern CLI for Vagrant Boxes.
Vermin can be used when you need an easy way to obtain a Linux environment up and running in minutes.
For example:
- If you want to have an environment to try .NET Core and you don't want to mess with your local own WSL installation.
- If you want to try to install a Kafka cluster, and you need something more than just a docker container.
Vermin in Action:
Also, you can check Why not Vagrant section.
Install Vermin
Vermin uses VirtualBox as the underlying hypervisor to create and run Virtual Machines. So you need to download and install it first.
To install/update on macos and linux run:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/mhewedy/vermin/master/install.sh)"
To install/update on windows (PowerShell) run:
# Should run as Adminstarator
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/mhewedy/vermin/master/install.ps1'))
Usage:
Create, control and connect to VirtualBox VM instances
Usage:
vermin [command]
Examples:
You can use vermin by creating a VM from an image.
To list all images available:
$ vermin images
Then you can create a vm using:
$ vermin create <image>
Available Commands:
commit Commit a VM into a new Image
completion Generates shell completion scripts
cp Copy files/folders between a VM and the local filesystem or between two VMs
create Create a new VM
exec Run a command in a running VM
gui open the GUI for the VM
help Help about any command
images List remote and cached images
ip Show IP address for a running VM
mount Mount local filesystem inside the VM
port Forward port(s) from a VM to host
ps List VMs
restart Restart one or more VMs
rm Remove one or more VM
ssh ssh into a running VM
start Start one or more stopped VMs
stop Stop one or more running VMs
tag Add or remove tag to a VM
update Update configuration of a VM
Flags:
-h, --help help for vermin
-v, --version version for vermin
Use "vermin [command] --help" for more information about a command.
You can start using vermin after installation using:
$ vermin create <image name> | vagrant/<vagrant image>
# example using vagrant image
$ vermin create vagrant/hashicorp/bionic64
vermin collect very simple usage data anonymously
Why not Vagrant:
- Vagrant uses a
Vagrantfile
which I think is most suited to be source-controlled inside git
, and for some use case it is an overhead to create and maintain such file. In such cases Vermin come to the rescue.
- In Vagrant, any chagne you need to make to the VM you need to reload the VM (stop/start). In Vermin most of the changes on the VM is done while the VM is Running.
- Vermin is a single binary file that can be easily installed and upgraded.
- It is important to note that, starting from version
v0.94.0
Vermin can smoothly uses Vagrant Cloud images.
- Myself, I look (and try to achieve) to Vermin as a modern CLI (like docker/podman) for Vagrant Boxes.
Contributors
Special thanks to Ahmed Samir for contributing the logo.
TODO
See TODO.md