Support #22318
Updated by Peter Amstutz 3 months ago
For testing the installer, we would like to be able to spin up 1 or more VMs on the local node into which we will install Arvados.
Research using KVM (or virtualbox or xen... research virtualization technologies) and the ansible support for managing VMs (using this module or other appropriate module)
https://docs.ansible.com/ansible/latest/collections/community/libvirt/virt_module.html
The goal is to have an ansible script that spins up VMs that can talk to one another which can be handed off to the installer playbook.
Ultimately we want something that can run on both developer desktops and on Jenkins nodes.
There's two types of virtualization
type 1, runs "below" the host kernel
type 2, runs "above" the host kernel
Xen is a type 1 hypervisor that is dedicated to running one or more guest OSes. Apparently the guest OSes also require some special settings to work with Xen.
KVM is a type 1 hypervisor that is part of the linux kernel. Guest OSes don't require modification. (I've seen this referred to as both a type 1 and type 2 hypervisor as well as a hybrid)
Virtualbox is a type 2 hypervisor. It is has a GUI and is good for running software where you need to use the desktop within the VM. It is mostly GPL but reportedly has some binary blobs that make it non-free.
There's a bunch of other software for managing VMs but it seems that they are either proprietary (e.g. vmware) or work in collaboration with Xen or KVM underneath.
https://cloud.google.com/compute/docs/instances/nested-virtualization/overview
Google says KVM is supported for type 1 virtualization or any type 2 virtualization (I guess?).
KVM needs to be enabled in the Linux kernel. I don't know if that's a feature enabled in default Debian/Ubuntu kernel, something that can be loaded as a module, or possibly requires custom kernel (I hope not!)