Cómo crear máquinas virtuales Virtualbox con Vagrant en Debian

Publicado el 04 mayo 2016 por Drassill
Las máquinas virtuales son cada día más y más usadas hasta convertirse en prácticamente una necesidad vital; ya sea para testeos, para probar sistemas operativos distintos, o para hacer de "nube". Luego estaría el tipo de máquinas virtuales, que pueden ser containers, virtualización a nivel de kernel(KVM), paravirtualización, etc... Que ya estaría mas relacionado con nuestras necesidades/posibilidades que con el concepto de virtualización en sí... La cuestión está que la creación de dichas máquinas suele llevar bastante tiempo, pues obviamente requiere tener la iso, seguir los pasos de instalación, esperar a que particione el disco, instale el sistema, el GRUB, etc.. Vamos, que generalmente tomará un mínimo de media hora una instalación de dicho tipo, y eso en caso de ser un disco duro pequeño y se haga una instalación ligera, pues en caso contrario difícilmente tomará menos de una hora la instalación en cuestión; lo cual lo convierte en una tarea tediosa y poco productiva; más aún cuando generalmente quieres instalarte una máquina virtual "estándar" que no tendrá ningún instalador especial ni ningún topo de configuración personalizada, o al menos no a nivel de instalación. Para evitar estos largos, y a veces repetitivos procesos, podemos optar por una opción que nos puede crear una máquina virtual basada en Virtualbox en cuestión de pocos minutos y de forma automatizada, convirtiendo dicha tarea en una labor más eficiente. Dicho método se logra gracias a una utilidad que he descubierto hace poco y que me parece muy interesante llamada Vagrant. En este caso he centrado las pruebas en Debian y Ubuntu, pero los sistemas basados en Red Hat también son perfectamente compatibles con esta herramienta.

Para poder disfrutar de las ventajas de Vagrant, lo primero que habría que hacer sería cumplir los requisitos para usarlo; que en este caso sería el poseer Virtualbox instalado en el sistema, pues en caso contrario Vagrant sería inoperativo... Antes era necesario bajarse manualmente el paquete .deb o .rpm e instalarlo a mano, pero hoy en día está incluido en los repositorios oficiales con lo que simplemente bastaría con hacer:
apt-get install virtualbox
Esto instalará todos los componentes necesarios para usar virtualbox y para que Vagrant considere que se pueden crear máquinas virtuales mediante dicho virtualizados. En caso de tener problemas con la instalación, probablemente se deba a que los repositorios que no están correctamente configurados. Es importante tener en cuenta que todos los repositorios deben acabar en main contrib non-free:
Ejemplo Debian:
deb http://ftp.es.debian.org/debian/ jessie main contrib non-free
Ahora obviamente habría que pasar al siguiente paso: La instalación de Vagrant. Este paquete no es aún todo lo popular que cabría esperar, así que aquí no podemos optar por instalarlo mediante los repositorios sino que tendremos que hacer una descarga manual del paquete; lo cual haremos desde la página oficial para evitar problemas. Aquí podemos ver que tenemos diferentes opciones y que incluso, si queremos, podemos instalar Vagrant en Windows, pero en este caso en concreto descargaremos el paquete .deb para entornos Debian (la arquitectura dependerá de nuestro equipo). Si queremos descargarlo directamente también podemos optar por usar wget o curl; esto se realizaría mediante el siguiente comando (para entornos de 64 bits):
curl -O"https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.deb"
Ahora solamente quedaría instalarlo manualmente gracias al comando dpkg; cosa tan sencilla como escribir el comando dpkg, seguido del parámetro -i y el nombre del paquete.
dpkg-i vagrant_1.8.1_x86_64.deb
La instalación apenas tomará unos segundos y con esto ya podríamos empezar a crear máquinas en muy poco tiempo pero... ¿En qué consiste dicho proceso? Vagrant tiene unas fuentes desde las que se puede descargar unas máquinas virtualbox "estándar" en muy poco tiempo; máquinas van acompañadas de un fichero llamado Vagranfile que contiene la configuración de ciertos parámetro de la máquina virtual, tales como la ip (entre otros). Esto en un principio no nos influye, pues estas configuraciones son opcionales y están diseñadas para customizar al máximo las máquinas virtuales, pero no son parámetros indispensables.
Ahora bien ¿Qué fuentes son aquellas? ¿De donde se descarga las máquinas virtuales? ¿Existe algún patrón? Esto no aparece demasiado bien documentado en la página oficial, pero indagando un poco he encontrado la fuente donde busca las máquinas virtuales que sería: https://atlas.hashicorp.com/boxes/search. Aquí además tendremos un buscador que nos ayudará a encontrar las máquinas que queramos instalar. Por ejemplo podemos querer instalarnos una máquina Ubuntu 16.04, lo cual mostraría el siguiente resultado:

Siempre veremos varios resultados, pero yo siempre recomiendo que nos fijemos en el "autor" de dicha máquina virtual; no es lo mismo una máquina subida por Ubuntu que una subida por un "desconocido". Yo en mi caso he optado por la que ha subido Ubuntu cuyo nombre sería ubuntu/xenial64.
A sabiendas del nombre de la máquina que queremos descargarnos, únicamente tendríamos que descargarnos el VagrantFile, lo cual es tan sencillo como escribir el siguient comando como usuario "normal2 (no como root):
vagrant init ubuntu/xenial64
Y por último, con virtualbox abierto, nos la descargaríamos y la iniciaríamos mediante este sencillo comando que tampoco tendría que ser ejecutado por root para evitar problemas:
vagrant up
La descarga tomará apenas unos 5 minutos (dependiendo del ancho de banda que tengamos), tras los cuales ya tendríamos una máquina virtual corriendo y completamente operativa; un proceso que apenas nos habrá llevado 10 minutos la primera vez pero que para futuras instalaciones nos tomará todavía menos tiempo, siendo un proceso muy cómodo y eficiente que nos puede ahorrar mucho tiempo. Cuando finalice el proceso veremos que Virtualbox ha creado una máquina con una nomenclatura tipo ${nombre_equipo}_${default}_${serie_numérica}. Algo parecido a esto:

Como podéis observar, virtualizar un sistema es cada día una tarea más ágil y sencilla que no nos tiene que tomar más allá de unos pocos minutos, facilitando nuestras tareas enormemente y permitiéndonos crear y destruir sistemas operativos con mucha facilidad.
Espero que os haya resultado útil.
Saludos.