Vagrant desde cero – ¿Cómo crear una máquina virtual?. Siguiendo con la guía de Vagrant para dummies hoy voy a explicar cómo crear nuestra primera máquina virtual con un entorno de desarrollo utilizando Vagrant.

La siguiente guía no es más que una traducción al español de la guía oficial de Vagrant con algunos toques personales. En cualquier caso, ante la duda la más tetuda, consultar la documentación oficial.

Vagrant desde cero – ¿Cómo crear una máquina virtual?

1. Crear un directorio de trabajo e inicializar el archivo Vagrantfile

Terminal: ~

$
mkdir vagrant_getting_started
cd vagrant_getting_started

Terminal: ~/vagrant_getting_started

$
vagrant init

2. Cargamos un box de Ubuntu 12.04

Terminal: ~/vagrant_getting_started

$
vagrant box add hashicorp/precise64

3. Editamos el archivo Vagrantfile y especificamos el box a usar

Editor: ~/vagrant_getting_started/Vagrantfile


# Vagrant.configure("2") significa que usamos VirtualBox para virtualizar
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
end

Otra opción podía haber sido inicializar directamente el Vagrantfile con el box que queremos, así:

Terminal: ~/vagrant_getting_started

$
vagrant init hashicorp/precise64

4. Antes de seguir échale un ojo a los 7 comandos de Vagrant que deberías de conocer sí o sí.

5. Arrancar la máquina virtual. Este comando ejecuta el Vagrantfile que acabamos de crear

Terminal: ~/vagrant_getting_started

$
vagrant up

6. Comprobar que tenemos acceso a la máquina virtual por ssh:

Terminal: ~/vagrant_getting_started

$
vagrant ssh

Aquí podemos comprobar también que el directorio /vagrant de la máquina virtual, es un directorio compartido de nuestro equipo, de manera que podemos utilizarlo para compartir archivos.

Terminal: ~/vagrant_getting_started

$
ls /vagrantVagrantfile

Para salir de la sesión ssh, ejecutar exit

7. Para instalar aplicaciones en la máquina virtual, se puede hacer a través de un archivo shell (también con otras herramientas como Docker, Chef, Puppet, etc.)

# Incluir en la carpeta donde tenemos el Vagrantfile un archivo bootstrap.sh y añadirlo a la configuración del Vagrantfile

Editor: ~/vagrant_getting_started/Vagrantfile


Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
config.vm.provision :shell, path: "bootstrap.sh"
end

8. El archivo bootstrap.sh contiene comandos que se ejecutarán la primera vez que se arranque la máquina virtual. Por ejemplo para instalar Apache:

vagrant desde cero

Si la máquina virtual ya estaba creada previamente, para que ejecute el bootstrap.sh:

Terminal: ~/vagrant_getting_started

$
vagrant reload --provision

Por último, para exponer puertos de la máquina virtual a nuestro equipo utilizamos port forwarding. Por ejemplo, sacar el puerto 80 del apache, para poder acceder desde http://localhost:4567 en nuestro equipo.

Editor: ~/vagrant_getting_started/Vagrantfile


Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
config.vm.provision :shell, path: "bootstrap.sh"
config.vm.network :forwarded_port, guest: 80, host: 4567
end

Si quieres puedes leer la guía rápida de Vagrant o continuar con los escenarios de uso más comunes de Vagrant.