Vagrant

Introducción a Vagrant

8 September, 2014

Me gustaría presentar rápidamente el uso de Vagrant en nuestro sistema local. Primero empezaré explicando que es Vagrant. Como se describe en su página web: Crear y configurar entornos de desarrollo de peso ligero, reproducibles y portátiles. Es un software que nos permite crear máquinas virtuales (VM) portátiles y compartibles con el entorno necesario. Cada entorno se compone de varios paquetes y configuraciones creando nuestra pila de desarrollo:

  • Ubuntu, Apache, PHP, MySQL, …
  • CentOS, NGINX, Ruby on Rails, MondoDB, …
  • …y otros.

Vagrant nos permite disponer de uno de estos entornos (Boxes) en nuestra máquina local. Este entorno se puede copiar de los servidores de pre-producción y producción de nuestro proyecto de manera que los cambios que hemos hecho seguirán los reales. Como se trata de una máquina virtual totalmente funcional en nuestro ordenador personal, también lo podemos configurar para que siga las instrucciones de nuestro equipo de administradores de sistemas o operaciones, por lo que los cambios realizados en pre-producción y producción seran reproducidos en nuestra Box Vagrant. Se considera Vagrant una envoltura alrededor del software de virtualización como VirtualBox y software de gestión de la configuración, como Chef, Salt and Puppet. Para obtener más información, consulta el sitio web de Vagrant o busca en Google. Hay un montón de información y tutoriales disponibles.

Vamos a continuar con la instalación del software necesario en nuestro ordenador personal:

  1. MacOSX, Windows or Linux
  2. VirtualBox
  3. VirtualBox Extension Pack
  4. Vagrant

Estoy asumiendo que ya tenemos una Box (Ubuntu) lista para usar, pero podemos crear nuestra propia siguiendo esta documentación. Trabajando en un equipo de desarrollo, esta Box podría ser proporcionada por nuestro administrador de sistemas o equipo de operaciones. Aquí para más Boxes.

Abrimos la aplicación de terminal o de línea de comandos y vamos al directorio de trabajo deseado. A continuación, creamos una carpeta de desarrollo y entramos en ella. Colocamos aquí la imagen Box:

$HOME/Development/packaged.box

Creamos una nueva carpeta “Box” y entramos en ella (cd):

$HOME/Development/Box/

Instalamos la Box en VirtualBox:

$ vagrant box add {title} {url} ## url can be a HTTP, HTTPS, local file or from the public Box site.
$ vagrant init {title}
$ vagrant up

Ejemplo:

$ vagrant box add myFirstBox ../packaged.box
$ vagrant init myFirstBox
$ vagrant up

Este último comando inicia nuestra VM. En esta carpeta de trabajo que deberíamos ver un nuevo archivo, más una carpeta oculta:

drwxr-xr-x .vagrant
 -rw-r--r-- Vagrantfile

El comando Vagrant utiliza los archivos de la carpeta/entorno más la imagen de VirtualBox. Más adelante voy a explicar la importancia de “Vagrantfile”.

Estoy asumiendo que estamos utilizando una caja de Ubuntu. Para entrar el ella solo debemos hacer:

$ vagrant ssh

Ahora deberíamos estar dentro la VM lista para usar. Deberíamos ver algo como:

Welcome to Ubuntu 13.10 (GNU/Linux 3.11.0-12-generic i686)
* Documentation: https://help.ubuntu.com/
Last login: Sat Sep 6 11:02:42 2014 from 10.0.2.2
vagrant@vagrant:~$

Para salir de la Box sólo debemos ejecutar “exit”.

A partir de aquí podríamos instalar (apt-get …) y configurar (/ etc …) nuestra Ubuntu, pero voy a dar algunas recomendaciones para automatizar el flujo de la Box listo para nuestros administradores de sistemas o equipo de operaciones.

Editamos nuestro Vagrantfile y descomentar/añadir estas líneas:

config.vm.provision :shell, :path => "vagrant-bootstrap.sh" ## provisioning file with instructions

A continuación creamos/actualizamos el fichero “vagrant-bootstrap.sh”:

#!/usr/bin/env bash
apt-get update
apt-get -y upgrade
apt-get install -y puppet
apt-get install -y git subversion curl vim screen

Una vez estos dos archivos son editados, podemos llamar a nuestra Box con el siguiente comando:

$ vagrant reload --provision

Deberíamos ver la Box activada y actualizandose siguiendo las instrucciones del fichero”vagrant-bootstrap.sh”.

Una vez se procesan los pasos, podemos seguir usando y configurando esta Box. He añadido una línea para instalar Puppet; para que podamos configurar nuestra Box con el Puppet Master y obtener cambios, actualizaciones, … de nuestro equipo de operaciones.

Pronto publicaré los pasos a seguir para configurar una Box Vagrant LAMP.


Chuleta: Configuración de arranque simple (Descargar)

## 1. vagrant: add image
$ vagrant box add {title} {url}  ## vagrant box add myFirstBox ../packaged.box
$ vagrant init {title}  ## vagrant init myFirstBox
$ vagrant up

## 2. vagrant: connect
$ vagrant ssh

## 3. open Vagrantfile and add…
config.vm.provision :shell, :path => "vagrant-bootstrap.sh"

## 4. open/create vagrant-bootstrap.sh and add…
#!/usr/bin/env bash
apt-get update
apt-get -y upgrade

apt-get install -y puppet
apt-get install -y git subversion curl vim screen 

## 5. vagrant: provision
$ vagrant reload --provision

## 6. vagrant: remove
$ vagrant destroy

    Etiquetas: , , , ,

    Dejar un comentario