Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Vagrant to set up a VM with KVM/qemu without VirtualBox

I'm getting started Vagrant and want to use it with KVM/qemu (and the Virtual Machine Manager GUI), instead of installing VirtualBox. So I first installed Vagrant:

$ vagrant --version Vagrant 1.9.1  $ vagrant box list There are no installed boxes! Use `vagrant box add` to add some 

As per these posts, I require vagrant-libvirt for it to work with KVM, so I installed that next:

$ vagrant plugin list vagrant-libvirt (0.0.37) vagrant-share (1.1.6, system) 

Next, I to add a CentOS(7) box using vagrant box add "centos/7" and selected libvirt, when prompted. After which, I ran vagrant init and didn't encounter any errors:

$ vagrant init centos/7 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. 

However, vagrant up seems to be erroring out, like so:

$ vagrant up No usable default provider could be found for your system.  Vagrant relies on interactions with 3rd party systems, known as "providers", to provide Vagrant with resources to run development environments. Examples are VirtualBox, VMware, Hyper-V.  The easiest solution to this message is to install VirtualBox, which is available for free on all major platforms.  If you believe you already have a provider available, make sure it is properly installed and configured. You can see more details about why a particular provider isn't working by forcing usage with `vagrant up --provider=PROVIDER`, which should give you a more specific error message for that particular provider. 
  • Here's the provider section in the Vagrantfile

    config.vm.provider :libvirt do |domain|     domain.driver = "qemu"     domain.memory = 512     domain.cpus = 1 end 
  • I tried modifying it to:

    config.vm.provider :libvirt do |domain|     domain.driver = "kvm"     domain.host = 'localhost'     domain.uri = 'qemu:///system'     domain.memory = 512     domain.cpus = 1 end 
  • I also tried vagrant up --provider=kvm, vagrant up --provider=qemu, and vagrant up --provider=libvirt too, to no avail.

Is there any step that I've missed? Or another package/dependency that needs to be installed?

Edit: After the adding centos/7 using vagrant, it shows up when running vagrant box list.

$ vagrant box list centos/7 (libvirt, 1611.01) 
like image 892
rahuL Avatar asked Feb 10 '17 08:02

rahuL


People also ask

Can Vagrant work without VirtualBox?

Solutions that work with Vagrant include VirtualBox, VMware, Docker, Hyper-V, and custom solutions.

Does Vagrant work with QEMU?

This is a Vagrant plugin that adds a simple QEMU provider to Vagrant, allowing Vagrant to control and provision machines using QEMU.

Can I use Vagrant with KVM?

In order to run Vagrant virtual machines on KVM, you need to install the vagrant-libvirt plugin. This plugin adds the Libvirt provider to Vagrant and allows Vagrant to control and provision machines via Libvirt. Install the necessary dependencies for vagrant-libvirt plugin.

Is QEMU KVM faster than VirtualBox?

VirtualBox is faster and has a better UI than QEMU. It's also a good choice only for x86 and x64 architectures.


1 Answers

Start vagrant box with command

vagrant up --provider=kvm 

Although it has been said in https://seven.centos.org/2017/08/updated-centos-vagrant-images-available-v1707-01/ that

The vagrant-libvirt plugin is only compatible with Vagrant 1.5 to 1.8

like image 181
Jmt Avatar answered Sep 21 '22 14:09

Jmt