Digital

Vagrant, configurando entornos de desarrollo

4 Mins de lectura

A menudo cuando desarrollamos un nuevo proyecto web, el cliente y la empresa desarrolladora tienen que ponerse de acuerdo en las especificaciones de las máquinas que van a albergar el proyecto final. Esto muchas veces se realiza tarde. En ocasiones uno se da cuenta cuándo va a realizar el despliegue del proyecto, por lo que vienen las prisas, los nervios, fallos en las fecha de entrega y, a veces, conlleva en un gasto de recursos innecesario si esto se hubiera coordinado desde el comienzo.

Lo habitual habría sido mandar las especificaciones al cliente: un servidor con Apache version X, PHP 5.4, MySql, etc. y el equipo de sistemas del cliente realizaba estas configuraciones. Hoy vamos a hablar sobre una solución para estos problemas y llevarlos a un nivel más avanzado.

Problemas en la configuración de entornos de desarrollo

Estos son algunos de los problemas que suelen surgir al desplegar el proyecto en el entorno de desarrollo:

  • Incompatibilidades en el tratamiento y almacenamiento de los datos (en especial caracteres y fechas).
  • Diferencias entre las distintas versiones del software base.
  • Las rutas de recursos y dependencias de paquetes inconsistentes.
  • El clásico “en mi local funciona”.

Todo esto hace que los despliegues en entornos de producción o validación sean una tarea estresante y con un grado de incertidumbre y de tendencia al error bastante alto, sin mencionar que la incorporación de un nuevo desarrollador al equipo de proyecto implique ejecutar nuevamente (y casi siempre de forma manual) las tareas necesarias para obtener un entorno de desarrollo bien configurado y funcionando.

Para dar solución a estos y otros problemas surge Vagrant.

¿Qué es Vagrant?

Vagrant es un software que permite de manera ágil y eficiente crear entornos de desarrollo al combinar el poder de la virtualización (proveedor) y la gestión automatizada de configuración (aprovisionador). Soporta la mayoría de los proveedores de virtualización del mercado, tanto locales (por defecto)  como en la nube (mediante plugins), lo cual permite contar con todo un abanico de posibilidades a la hora de planificar donde y como implementar el entorno de desarrollo diseñado para le proyecto. También es capaz de aprovisionar las máquinas virtuales mediante las herramientas más populares de gestión de configuración como Ansible, Chef y Puppet o a puro shell si fuese el caso.

Vagrant emplea un enfoque diferente al tratar las máquinas virtuales, utilizando solo los recursos mínimos y con mecanismos que escalan eficientemente estos según las necesidades de cada proyecto, permitiendo obtener un entorno completamente funcional en  tan solo unos pocos segundos. A esto se le añade que los entornos creados con Vagrant son totalmente desechables, permitiendo destruirlos y recrearlos fácilmente desde la línea de comandos, tanto si se dañan como si no estarán en uso por un tiempo. A su vez,  los cambios en requerimientos de software o de la configuración se trasladen a los entornos de forma rápida y sin mayor esfuerzo que la orden necesaria para llevarlos a cabo.

Un entorno Vagrant (no se refiere a una sola maquina virtual, ya que es posible contar con varias en un solo entorno) es a grandes rasgos un fichero escrito en Ruby que describe al proveedor las características físicas necesarias para soportar los requerimientos de software que se le indican al aprovisionador. Al ser un fichero permite al entorno ser totalmente versionable, es decir que forme parte del código fuente del proyecto, quede documentado y haciendo que sea posible compartirlo entre los miembros del equipo lo cual facilita y automatiza las nuevas incorporaciones. Esta característica permite además, que un entorno sea único para cada proyecto pudiendo abarcar el más mínimo detalle pero la vez introduce la posibilidad de reutilizar lo que fuese necesario en nuevos proyectos con tan solo unos pocos ajustes.

Pasando a la acción

Descrito a grandes rasgos que es Vagrant y que se puede obtener con él, solo queda un ejemplo muy  simple y práctico: un servidor web con Apache. Primero será necesario instalar VirtualBox y Vagrant, además deberéis descargar y descomprimir el siguiente archivo el cual contiene el fichero Vagrantfile que define la maquina virtual a crear y un directorio html que almacena la página de bienvenida que serviremos como ejemplo. Una vez hecho esto, desde la consola y en el directorio donde habéis descomprimido el archivo ejecutad vagrant up. Como es la primera vez que ejecutáis Vagrant en vuestro ordenador y en especial esta maquina virtual que estamos creando le tomará un tiempo extra ya que se descarga directamente de Internet, la base del sistema (box en el argot de Vagrant), a partir de aquí y todas las veces sucesivas que utilicemos esta maquina virtual o su base, solo le tomará unos segundos como podréis apreciar en la imagen que se muestra bajo estas líneas.

Vagrant console output

Haga click para ver demo

 

Si accedéis con vuestro navegador a http://127.0.0.1:8080 os encontraréis una bonita página de bienvenida. Después que hayáis disfrutado de los resultados podéis deshaceros de la máquina virtual ejecutando  vagrant destroy o si planeáis volver luego con un vagrant halt bastará y conservaremos las modificaciones y ficheros que contenga la maquina virtual. Si deseamos acceder a la maquina virtual directamente Vagrant nos permitirá iniciar sesión a través de SSH y nos brindará acceso root con tan solo ejecutar vagrant ssh.

Como habéis visto en solo unas pocas líneas y un par de comandos contamos con un servidor web completamente funcional. Las posibilidades y aplicaciones son infinitas.

Si tienes alguna duda confiurando tus entornos de desarrollo, puedes dejar un comentario y trataremos de responderte cuanto antes.

Dennis Torres
2 posts

Sobre el autor
Érase una vez PHP, luego Symfony ahora Drupal; mañana no se pero seguro me pilla programando
Artículos
Artículos relacionados
Digital

Salesforce Marketing Cloud o Pardot: ¿cuál es mejor para mi negocio?

2 Mins de lectura
Crear experiencias personalizadas, aumentar la captación de clientes, unificar todos los datos y comunicaciones en varios canales son algunas soluciones que ofrecen…
DestacadosDigital

¿Qué son las Web Stories y cómo pueden ayudar al tráfico de tu medio?

3 Mins de lectura
A día de hoy ya son conocidas las posibilidades que ofrecen las stories de Instagram o de Facebook a la hora de…
Digital

Datos estructurados: características e importancia de utilizarlos para mejorar el CTR

11 Mins de lectura
¿Qué son los datos estructurados en SEO? ¿Por qué marcar los datos estructurados? Formas de marcar los datos estructurados Vocabulario para marcar…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *