Vagrant: Inicio Rápido

! This post hasn't been updated in over 2 years.

El desarrollo web se realiza generalmente en lo que llamamos un entorno local, es decir en nuestro equipo instalamos todo lo necesario para trabajar y entre estas cosas montamos lo necesario para ejecutar las aplicaciones que estamos desarrollando, por ejemplo, apache, php, mysql, etc… dentro de este entorno local es que estamos desarrollando y probando nuestros proyectos. Esta forma de trabajar es común aunque tiene varios puntos en contra:

  • Las versiones de software son diferentes a las de nuestros servidores o incluso el sistema operativo puede ser diferente, y si no tienes cuidado es posible que uses alguna característica que no esta disponible en tus entornos de producción.
  • Cada vez que un nuevo integrante se une al equipo tendrá que instalar en su maquina todo lo que requiere, esto parecería que no es un problema, pero si lo piensas bien, este trabajo ya se realizo alguna vez y ahora se esta repitiendo.
  • En caso de que tengas algún problema con tu equipo, el formatear y volver a preparar una maquina te hará perder tiempo de nuevo.
  • Según tu Sistema Operativo es posible que algunas extensiones no estén disponibles de forma directa, y compilar manualmente las cosas normalmente es un contratiempo.
  • En caso de contribuir en varios proyectos desde la misma computadora, se pueden presentar conflictos al tener la necesidad de ejecutar aplicaciones que tienen dependencias de un mismo recurso, pero con diferentes versiones.

Pero no se preocupen, Vagrant viene al rescate, Vagrant es un proyecto que te permite levantar maquinas virtuales e instalar todo lo que necesitas para ejecutar tus aplicaciones web de una forma relativamente sencilla (este proceso normalmente se conoce como provisionamiento y así lo usaremos de aquí en adelante).

logo_vagrant

El proceso es relativamente simple, cuando tu tienes tu archivo vagrant (pudiste descargarlo de algún lado o generar uno desde 0 usando vagrat init dentro del directorio de la aplicación), simplemente tienes que utilizar el comando vagrant up, y automáticamente se preparara una maquina virtual y se provisionara, para provisionar es posible usar Shell, Puppet o Chef, el provisionamiento solo se ejecutara la primera vez que levantas tu maquina (aunque tu puedes invocar el provisionamiento de forma manual), una vez que tu maquina esta creada puedes detenerla usando vagrant halt y volverla a iniciar usando vagrant up.

Vagrant ofrece varias imagenes de sistemas operativos para que comiences de forma rapida, aunque es posible usar tu propia imagen para crear tus maquinas vagrant.

Otro comando importante es vagrant ssh, el cual te permitirá crear una conexión ssh directo a tu maquina vagrant, normalmente entra directo o usa por default users vagrant o root con el password vagrant.

Para trabajar en tu proyecto, vagrant ofrece la posibilidad de crear folders compartidos, de este modo tu puedes estar realizando cambios a tu codigo de forma local y ver reflejados los cambios en tu maquina vagrant, el rendimiento en proyectos chicos es relativamente bueno, para proyectos grandes existe la posibilidad de usar un servidor nfs y mejorar notablemente el rendimiento de las carpetas compartidas, esta caracteristica no esta disponible en Windows pero existen otras propuestas que seria interesante probar como lo es chirp.

Las maquinas virtuales de vagrant por default se generan con pocos recursos sin embargo tu puedes modificar esta configuración en tu archivo vagrant para tener un mejor rendimiento.

Por donde empiezo.

  • Por supuesto por la documentación oficial.
  • Existen varias herramientas que te pueden ayudar a crear la base de tus maquinas vagrant como Rove o PuPhpet.
  • Chef y Puppet son excelentes para provisionar, sin embargo usar shell resulta muy sencillo y natural al inicio.
  • Por supuesto no dejes de experimentar.