Dado que recientemente tuve algunos problemas para utilizar VirtualBox, he decidido utilizar un plugin de vagrant para crear maquinas por medio de libvirt. Tratare de cubrir los puntos esenciales de su instalacion y configuracion en una computadora fisica.
Cabe mencionar que es preferible utilizar virtualizacion por hardware(KVM) que emulacion por software(QEMU) dado sus notables ventajas en rendimiento. Para ello es necesario revisar que se nuestro hardware soporte y tenga habilitada dicha caracteristica, esta validacion es diferente entre distintos fabricantes y se realiza a traves de las configuraciones del BIOS.
Como paso inicial es necesario contar con el servicio de libvirtd correctamente instalado y configurado. Ademas, habilitaremos la capacidad de tener virtualizacion anidada en los modulos del kernel. Esta capacidad permite crear maquinas virtuales dentro de otra maquina virtual sin necesidad de emular las caracteristicas del hardware.
Los comandos necesarios para Fedora 23 son:
$ sudo dnf install -y libvirt
$ sudo systemctl enable libvirtd
$ sudo systemctl start libvirtd
$ sudo rmmod kvm-intel
$ sudo sh -c "echo 'options kvm-intel nested=y' >> /etc/modprobe.d/dist.conf"
$ sudo modprobe kvm-intel
$ sudo usermod -a -G libvirt $USER
Una vez que tenemos el servicio de libvirt ejecutandose, los modulos del kernel configurados y nuestro usuario incluido en el grupo de libvirt, procedemos con la instalacion de Vagrant y sus respectivos plugins
$ sudo dnf install -y https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.rpm
$ sudo dnf install -y gcc
$ vagrant plugin install vagrant-libvirt
Por ultimo y simplemente para validar que todo funcione correctamente, crearemos un Vagrantfile con un Vagrant box que soporte libvirt como proveedor. En el sitio oficial podremos encontrar una gran variedad de ellos.
Para el arranque de la maquina es necesario ejecutar el comando de vagrant up con el argumento de –provider libvirt o declarar la variable de ambiente VAGRANT_DEFAULT_PROVIDER=libvirt que modifica el valor por defecto del proveedor utilizado por vagrant.
$ vagrant init centos/7
$ vagrant up --provider libvirt