Ejecutar Vagrant en VirtualBox

¿Es posible ejecutar Vagrant dentro de una MV VirtualBox?

Dentro de una MV VirtualBox es posible utilizar Vagrant utilizando como proveedor VirtualBox, pero con limitaciones. En este artículo te explico como.

El problema es que la versión actual de VirtualBox (5.2) no tiene soporte para instrucciones VT anidadas. Es decir VT en VT.

Existe una petición de mejora y quizá se implemente en el futuro debido al creciente interés.

¿Y cuál es el inconveniente? Al no tener instrucciones VT en la MV anidada no es posible ejecutar máquinas en 64 bits. Dependiendo de tu proyecto es posible que sea una limitación insalvable, o no.

Antes de empezar necesitas tener ya preparado:

  • Un equipo con VirtualBox ya instalado.
  • Y una máquina Virtual (MV) corriendo en este equipo, que es dónde vamos a ejecutar Vagrant. En el ejemplo he utilizado una MV con Xenial.

Instalar y Configurar Vagrant

Desde la MV hay que instalar Vagrant. Para luego crear el Vagrantfile con la configuración de la nueva MV.

En la consola:

# descargar
$ export VVERSION="2.0.4"
$ wget https://releases.hashicorp.com/vagrant/${VVERSION}/vagrant_${VVERSION}_x86_64.deb

# instalar
$ dpkg -i /home/csr/Descargas/vagrant_${VVERSION}_x86_64.deb 

Crea el fichero de configuración de Vagrant con las instrucciones:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ cat << EOF >> Vagrantfile

Vagrant.configure("2") do |config|

  # configurar VirtualBox como proveedor
  config.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--cpus", "1"]   
  end

  # utiliza sólo imágenes de 32b
  config.vm.box = "hashicorp/precise32"
end
EOF

En detalle:

  • Las líneas 6, 7 y 8 configuran VirtualBox como proveedor y que sólo utilize 1 CPU. Es necesario por la falta de instrucciones VT-x.
  • Por el mismo motivo sólo es posible levantar MVs de 32b dentro de VirtualBox (línea 11).

Sólo resta levantar la MV y comprobar que puedes entrar por SSH.

$ #arrancar la MV
$ vagrant up

$ #entrar por ssh
$ vagrant ssh 

Alternativas

¿Hay alternativas? Utilizando LXD puedes utilizar Vagrant con VirtualBox como proveedor.

Y para que Vagrant funcione hay que instalar el plugin LXD para Vagrant con este comando:

$ vagrant plugin install vagrant-lxd

Así, podrás levantar MV de 64b.

César Maeso

Lecturas recomendadas

Creative Commons License

Esta obra está bajo una licencia de Creative
Commons Reconocimiento-NoComercial-CompartirIgual
4.0 Internacional
.