Cómo crear un Base Box en Vagrant a partir de una máquina virtual

Publicado el 19 enero 2015 por Dbigcloud @dbigcloud

La semana pasada os hablaba de Vagrant, la utilidad para desplegar máquinas virtuales basadas en templates (Box) y alguno de ustedes me preguntaban, ¿Cómo se crean esos templates? Hoy os voy a explicar como crear un Box a partir de una máquina virtual en VirtualBox, así de esta forma podéis crear vuestro propio repositorio de tamplates para Vagrant.

Lo primero que tenemos que hacer es preparar nuestra máquina virtual con una configuración por defecto, por si queremos publicar nuestro Box, ésto se realiza para seguir un estandar y que todo el mundo pueda usar dicho Box.

Preparación de la máquina virtual:

- Crear el usuario Vagrant, para poder acceder a la máquina virtual por ssh, a este usuario debemos crear una relación de confianza  usando el siguiente Keypairs.

useradd -m vagrant
su - vagrant
mkdir .ssh
wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

- Aunque Vagrant no esta pensado para usar el usuario root, a veces nos es necesario por lo que debemos cambiar la password de root a vagrant

passwd root

Indicamos que la password es vagrant

- Conceder permisos al usuario vagrant para que pueda configurar la red, instalar software, montar carpetas compartidas... para ello debemos configurar visudo para que no nos solicite la password de root, cuando realicemos estas operación con el usuario vagrant.

visudo

Ahora debemos añadir la siguiente linea

vagrant ALL=(ALL) NOPASSWD: ALL

Hay que comprobar que no existe una linea indicando requiretty si existe la comentamos.

- Debemos asegurarnos que tenemos instalado las VirtualBox Guest Additions, para conseguir mejoras en el S.O o poder compartir carpetas con el anfitrión.

root@dbigcloud:~# modinfo vboxguest
filename:       /lib/modules/3.13.0-32-generic/updates/dkms/vboxguest.ko
version:        4.3.20
license:        GPL
description:    Oracle VM VirtualBox Guest Additions for Linux Module
author:         Oracle Corporation
srcversion:     22BF504734255C977E4D805
alias:          pci:v000080EEd0000CAFEsv00000000sd00000000bc*sc*i*
depends:        
vermagic:       3.13.0-32-generic SMP mod_unload modversions 

Creando el Base Box en Vagrant

Una vez hemos configurado la máquina virtual ya podemos crear el box, en virtual box debemos de localizar el nombre de nuestra máquina virtual.

En mi caso he estado preparando la máquina virtual dbc-ubu01, pero una buena práctica es establecer un nombre descriptivo con el Sistema operativo instalado, versión y software instalado. Ahora vamos a crear el Box, abrimos una consola y ejecutamos lo siguiente:

vagrant package --base dbc-ubu01

 

Ya podemos añadir nuestro box, para ello usamos el comando siguiente:

vagrant box add dbc-newBox01 /home/dbigcloud/package.box

Ahora debéis de crear un proyecto para iniciar la máquina virtual, si no os acordáis podéis repasar el árticulo de la semana pasada.

- Primeros pasos con Vagrant

Si creeis que vuestro template aporta cosas diferentes a los que ya existen en los repositorios, podéis compartirlo a vagrantcloud,espero que os haya sido útil.