While HashiCorp plays license roulette, Virter rolls out to rescue FOSS VM testing
BSL shenanigans continue to make waves
Open Source Summit Europe Virter is a useful little tool if you often create – and then remove – VMs to try stuff. It's arguably carried on the ripples from HashiCorp dropping the BSL into the FOSS pond.
This year's Open Source Summit Europe was in Vienna, which as the The Reg FOSS desk arrived was stricken with storms and flooding, as was much of central Europe last weekend. The whirring server farms of the cryptocurrency fans and LLM hucksters are making matters worse in this department.
A very prominent presence at this year's event was the new Redis fork Valkey, which resulted from Redis changing its license terms back in March – as it happens, during KubeCon Europe, according to Valkey developer Madelyn Olson in the talk on the new project.
But Valkey isn't the only such fork of a newly relicensed product, and Redis is far from the only company making such radical changes. The year before, HashiCorp also changed licenses, which among other things led to the OpenTofu fork of HashiCorp's Terraform – whose adoption by the Linux Foundation was announced at last year's OSS EU. It was also followed by IBM acquiring HashiCorp.
Terraform isn't the only thing HashiCorp offered, though. Its first product was Vagrant, which we looked at in 2022. Vagrant is a handy command-line tool that lets you create, run, configure, and connect to a new VM containing a choice of OSes – and, once you've tested your code, quickly remove them again. Vagrant used to be FOSS, and it was included in most major Linux distributions' repositories – but it's not anymore. Now it, too, is source-available, under the BSL.
That brings us to the new Virter tool, which was presented by one of its developers, Christoph Böhmwalder at this year's OSS EU. He described it as "Docker for VMs."
What Virter does is really quite similar to Vagrant. It's a single binary that hugely simplifies the process of handling Linux VMs for software testing. It's not a direct replacement, but it does the same sort of things, and shares the same goals: making the process as simple and quick as possible. Vagrant defaults to using VirtualBox for its VMs. It's a solid choice: VirtualBox is easy, FOSS, and runs – and runs on – almost anything. This does mean that it's not a native part of the Linux OS, though, and in Böhmwalder's words, "it does weird things with the Linux network stack."
Users can configure Vagrant to use other hypervisors, but that rather misses the point of a tool that's designed to simplify the process.
- Redis justifies open source shift with fresh hardware, LLM cost-saving features
- CockroachDB scuttles away from open source Core offering
- OpenTofu hits version 1.8 with more crowd-pleasing features
- FTC probes IBM's $6.4B HashiCorp takeover
Virter builds on the existing standard Linux tooling to manage VMs instead. Via the libvirt
library, it calls QEMU to create virtual machines, runs them using KVM, and configures them using cloud-init
. These tools are noticeably more complex and fiddly than VirtualBox, so placing a wrapper around them to simplify matters is welcome. Böhmwalder pointed out there are other, similar tools out there as well as Vagrant, such as Canonical's Multipass if you only need Ubuntu VMs.
Creating a new VM can be as simple as one command:
virter vm run --name alma-8-hello --id 100 --wait-ssh alma-8
The name is self-explanatory. The numerical id
you use becomes the last octet of its IP address, so in this case it could be 192.168.0.100 (depending on your network config, of course). You can connect to VMs by name or by ID, pull qcow2
disk images in advance to make things faster, and even layer images on top of each other, Docker-style. There's lots more info and examples in his slide deck [PDF].
Although Virter is quite new – it's only up to version 0.27.0 at the time of writing – Böhmwalder's company LINBIT is already using it to run automated tests on tens of thousands of instances every day.
Virter also has accompanying tools of its own, such as vmshed. The name was originally a typo, but now the team refers to it as a "shed for storing your VMs," it's really more of a tool for automating tests, defined using TOML files, on fleets of VMs.
Virter isn't a fork of Vagrant, and it's not even a direct response. It's rather an alternative, using existing and more Linux-standard tooling, which does much the same job. But with Vagrant disappearing from distro repos due to the BSL, it may be that Virter is poised to take its place. In the meantime, you can just download and run it directly from GitHub. ®