Crear box de Vagrant desde cero... ¡automáticamente!

Hoy os quiero enseñar mi manera de crear una Vagrant box desde cero y como he automatizado el proceso con la ayuda de unos scripts que he escrito.

Casi seguramente puedes encontrar muchos blogs que explican como crear una Vagrant box desde cero, pero honestamente ... es un trabajo aburrido, asì que pensé de compartir mis scripts que nos simplifican un poco las cosas. Los puedes encontrar en mi cuenta GitHub, y aquí abajo hay las instrucciones para usarlos.

Crear y configurar una nueva maquina virtual

Antes de todo tienes que crear una nueva maquina en Virtualbox, en este ejemplo la llamaré fedora24.

Luego, hay que añadir una regla "port forwarding" a la tarjeta de red. Pincha con el botón derecho el nombre de la maquina y selecciona Settings -> Network -> Adapter 1 -> Advanced -> Port Forwarding -> Plus icon y usa los siguientes:

  • Name: ssh
  • Protocol: TCP
  • Host IP: 127.0.0.1
  • Host Port: 2222
  • Guest IP: leave this field blank
  • Guest Port: 22

Ahora hay que instalar el sistema operativo, procura crear un usuario administrador con el nombre vagrant.

En cuanto termina la instalación, hay que añadir el usuario vagrant a los sudoers para hacer que no pregunte por la contraseña y deshabilitar el requiretty. Para ello hay que entrar el la maquina y añadir las siguientes lineas al fichero /etc/sudoers.

vagrant ALL=(ALL) NOPASSWD: ALL
Defaults:vagrant !requiretty

Ahora, instala los "Guest Additions" de Virtualbox con sus dependencias, por ejemplo en Fedora hay que instalar primero el paquete kernel-devel.

Tambien tienes que habilitar y arrancar el servicio ssh.

$ sudo systemctl enable sshd
$ sudo systemctl start sshd

Sal de la maquina virtual y genera una nueva clave ssh para el usuario vagrant con los siguientes comandos:

$ cd $HOME/.ssh
$ ssh-keygen -t rsa -C vagrant@localhost -f vagrant.id_rsa

Luego, ejecuta scripts/copy-ssh-key.sh para copiar la clave publica del usuario vagrant a la maquina virtual y prueba la conexión ssh con:

$ ssh -i vagrant.id_rsa -p 2222 vagrant@127.0.0.1

En fin, apaga la maquina virtual, ya está lista par crear la Vagrant box.

Crear una nueva Vagrant box

Genera un nuevo fichero Vagrantfile:

$ scripts/generate-vagrantfile.sh fedora24 1.0

Crea una nueva vagrant box:

$ scripts/build-box.sh fedora24 1.0

Genera una nuevo fichero json:

$ scripts/generate-json.sh fedora24 1.0 "Fedora 24 base image."

Ahora, añade la nueva box a tu Vagrant:

$ scripts/add-vagrant-box.sh fedora24 1.0

Listo, ahora es el momento de probar la nueva box:

$ cd tests
$ vagrant init fedora24
$ vagrant up

Repositorio del proyecto y licencia

Puedes encotrar el codigo fuente de este proyecto en GitHub

Este proyecto es bajo licencia MIT. Por favor, leer el fichero LICENSE.

Danilo


Ref: Creating a Base Box