Skip to content

Instantly share code, notes, and snippets.

@johananl
Last active October 22, 2021 12:49
Show Gist options
  • Save johananl/6ff2dba00dc4dc1d7810de4feecb8646 to your computer and use it in GitHub Desktop.
Save johananl/6ff2dba00dc4dc1d7810de4feecb8646 to your computer and use it in GitHub Desktop.
KVM nested virtualization
L0 = bare metal machine
L1 = VM on bare metal
L2 = VM on VM
First, ensure virtualization is enabled on L0 as described here: https://docs.fedoraproject.org/en-US/quick-docs/using-nested-virtualization-in-kvm/#proc_enabling-nested-virtualization-in-kvm
Next, launch L1 with the following Vagrant config (or an equivalent directly on the hypervisor):
Vagrant.configure("2") do |config|
config.vm.box = "generic/ubuntu1604"
config.vm.provider :libvirt do |libvirt|
libvirt.cpus = 4
libvirt.memory = 16000
libvirt.nested = true
libvirt.cpu_mode = "host-passthrough"
libvirt.driver = "kvm"
end
end
Finally, launch L2 from within L1 using the following Vagrant config:
Vagrant.configure("2") do |config|
config.vm.box = "fedora/28-cloud-base"
config.vm.provider :libvirt do |libvirt|
libvirt.cpus = 1
libvirt.memory = 1000
libvirt.driver = "kvm"
libvirt.management_network_name = 'vagrant-libvirt-new'
libvirt.management_network_address = '192.168.124.0/24'
end
end
@surajssd
Copy link

surajssd commented Dec 21, 2018

Installing vagrant and libvirt on the L1

sudo apt-get update -y
sudo apt-get install -y libvirt-bin libvirt-dev qemu-utils qemu wget
sudo /etc/init.d/libvirt-bin restart
sudo addgroup libvirtd
sudo usermod -a -G libvirtd $USER


wget https://releases.hashicorp.com/vagrant/2.2.4/vagrant_2.2.4_x86_64.deb
sudo dpkg -i vagrant_2.2.4_x86_64.deb

vagrant plugin install vagrant-libvirt
vagrant plugin install vagrant-mutate

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment