Archivo Vagrant: por qué trabajar con IDE’s virtuales
Un Entorno de Desarrollo Integrado es como la oficina personal de cada programador de software, debido a que tenemos a la mano todos los componentes para enfocarnos en la tarea. Hoy en día todo está orientado hacia las aplicaciones web y en un artículo anterior os referimos cómo grandes empresas han aprovechado para ofrecer tales servicios de manera rápida, en lo que han devenido en llamar “Arquitectura sin servidor”, de manera eufemística. Para estos casos os decimos que un Archivo Vagrant pudiera ser desarrollado para simular este ambiente sin servidor para realizar pruebas, ahorrando tiempo y dinero antes de contratar de plano dichos servicios y crear nuestra aplicación web.
En este artículo os mostraremos cómo ha evolucionado el campo de la programación, siempre con narraciones concisas y enlaces adicionales si queréis profundizar vuestros estudios en la materia.
En el siglo XX…
Sí, a muchos de nosotros nos tocó vivir esa época. Los ordenadores eran costosos, más aún de lo que son hoy día, así que muchos no teníamos ordenadores en casa. Eran tiempos más sencillos, donde no nos llevábamos el trabajo a casa y los teléfonos móviles estaban reservados solo para nuestros jefes, así que cuando salíamos de la oficina estábamos realmente desconectados y podíamos vivir sin Internet. Pero cuando encendíamos nuestro ordenador para programar ya habíamos colocado todas las variables -y programas- necesarios para comenzar nuestra labor. Eso era una cuenta regresiva para la hora de salida, debíamos tener todo el ambiente de programación puesto a punto y listo. Los administradores de red se encargan del hardware; nosotros los programadores del software y cada aplicación que desarrollemos es única, aunque comparten rasgos comunes.
En ese tiempo pasado, ir a la oficina físicamente era algo común, pero ahora, pues va a ser que no.
En este siglo XXI
Ahora los programadores podemos trabajar de manera remota y para varios clientes o empresas desde cualquier lugar, pero tal flexibilidad trae consigo el temido “funciona en mi máquina“, pero no en la de otros desarrolladores que trabajen con nosotros. Para ello las máquinas virtuales han resuelto, en parte, este problema e incluso su complejidad ha aumentado de manera exponencial con las redes definidas por software.
Como dijimos, cada aplicación es única y sus componentes pueden llegar a ser muy singulares o específicos. Todo lo anterior tal vez no resuelva por completo nuestras necesidades, pero tranquilos, aún no es hora de decirle adiós a nuestras computadoras personales, al menos no en nuestra profesión.
Archivo Vagrant
La Liberación Continua de Software y la Integración Continua han llevado mucho más allá las exigencias para cumplir con plazos y metas: debemos copiar desde los repositorios los algoritmos sobre los que estemos laborando, para hacer modificaciones muy concretas y específicas para luego devolverlas a la causa común. Ya sea que estemos en América o en Europa deberemos estar siempre listos para cualquier trabajo, y aquí es cuando entra en escena el Archivo Vagrant, para ser exactos Vagrantfile, ambas palabras unidas y formando un sustantivo propio.
Un Archivo Vagrant describe tanto un sistema operativo como el aprovisionamiento y también configuración de un entorno de desarrollo. Es una oración sencilla, pero para los programadores es todo un trabajo completo y bastante tedioso: nos quita energías para programar. Con un Archivo Vagrant creado y adaptado por todos los miembros del equipo no solo tendremos un entorno de desarrollo, también tendremos un entorno idéntico al usado en producción, tarea que haremos en una sola oportunidad en el equipo donde habitualmente trabajamos.
Instalando Vagrant
Para instalar cualquier Archivo Vagrant necesitaremos primero tener instalado VirtualBox, y en nuestro caso usamos Debian/Ubuntu. Una vez tengamos instalado este hipervisor podremos proceder a instalar Vagrant. En un ambiente GNU/Linux es común utilizar apt-get install vagrant o para CentOS y relacionados yum install vagrant, pero si tenéis algún problema es mejor descargar directamente desde la página oficial los paquetes de instalación en vez de los repositorios por defecto de vuestro sistema operativo. Al momento de escribir este post las plataformas soportadas son las siguientes:
- Linux (64 bits, paquete en formato AppImage, el cual es muy apreciado por Linus Torvalds, creador de Linux, quien explica su funcionamiento).
- Debian (32 y 64 bits, paquete en formato .deb)
- Microsoft Windows® (32 y 64 bits)
- CentOS® (32 y 64 bits, paquete en formato .rpm)
- macOS® (32 y 64 bits, paquete en formato .dmg)
- ArchLinux (64 bits, paquete en formato .tar.xz)
Primeros pasos
Lo primero que ejecutaremos es el comando vagrant -v en una ventana terminal, para ver qué versión tenemos instalada (2.1.2, a la fecha). Luego podremos escoger el sistema operativo que vamos a utilizar; en el caso de Pandora FMS el seleccionado es CentOS 7, así que crearemos en nuestros documentos de usuario una carpeta llamada vagrant-home:
# mkdir ~/vagrant-home # cd ~/vagrant-home # vagrant init centos/7
Aquí es donde debemos tener paciencia: se procede a descargar una imagen del proveedor deseado, en este caso una Red de Entrega de Contenidos (CDN, en idioma inglés) desde vagrantcloud.com:
Justo es deciros en este momento que muchas empresas han colaborado publicando cada una por sus propios medios un fichero imagen para distintos hipervisores. En el caso de CentOS tenemos para Microsoft Hyper-V®, Libvirt, VMWare Fusion® y, por supuesto, para VirtualBox.
¿Necesitamos una base de datos Percona? Podremos buscar en VagrantUp algún Archivo Vagrant que se adapte a nuestras necesidades, ¡o podemos crear nuestros propios Archivos Vagrant y, además, compartirlos!
Utilizando, por fin, un Archivo Vagrant
Ahora sí haremos todo nuestro trabajo de administración de configuración de servidores con un Archivo Vagrant y comenzaremos por revisar el que acabamos de crear… ¿cuándo? Pues cuando emitimos la orden vagrant up en nuestra carpeta vagrant-home:
Todas las líneas están comentadas, a excepción de la que describe la máquina virtual; allí podremos cambiar rápidamente cualquier cosa que necesitemos (dirección IP, puertos de escucha para conectarnos vía SSH, etcétera). Por ahora usaremos la orden vagrant halt para apagar nuestra máquina.
El “mantra” de Vagrant
Obviando los detalles técnicos, la idea es, por medio de un Archivo Vagrant que obtengamos, descargar una máquina virtual y, además, con instrucciones adicionales realizar el aprovisionamiento y configuración de un ambiente de desarrollo (o de producción, indistintamente). Así tendremos nuestra propia máquina, encenderemos y apagaremos, y si en determinado momento queremos reiniciar y comenzar de nuevo usaremos vagrant destroy.
Nota muy importante: recordad guardar FUERA de la máquina virtual todo vuestro trabajo, o si usáis Git aplicar el comando git push; en Pandora FMS utilizamos GitHub para almacenar el código fuente desde 2014.
Trabajando con Vagrant
A todas estas, ¿cómo nos conectamos con nuestro Archivo Vagrant (como ya vimos, este fichero es la médula del asunto)? Pues siempre ubicados en nuestra carpeta a tal efecto creada, introducimos vagrant ssh y listo, ya estaremos conectados para comenzar nuestro trabajo.
¿Queremos conectarnos de manera “normal”, como siempre lo hemos hecho? Al ser humano el único cambio que le gusta es el cambio de pañal; si queremos conectarnos con el comando de siempre, ssh, primero deberemos ejecutar vagrant ssh-config para conocer, valga la redundancia, la configuración que usaremos. Preparaos porque es un poco larga la sintaxis:
Monitorizando a Vagrant
De la conexión por SSH podremos agregar el parámetro “-o LogLevel=VERBOSE” para detallar lo que sucede con nuestra conexión (de manera predeterminada está configurada a “FATAL”, los otros posibles valores son QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 y DEBUG3). También para los registros o logs, si usamos VirtualBox, están ubicados en
“~/VirtualBox VMs/vagrant-nombre_de_nuestra_carpeta_default_XXX/Logs/VBox.log” en un formato muy particular… pero antes de profundizar en eso, os decimos que es apenas la punta del témpano, porque solo nos muestra el registro de las conexiones SSH y tal vez debemos apuntar más alto.
Para llevar registro del arranque de nuestras máquinas virtuales deberemos utilizar el parámetro “–debug” para poder obtener todos los detalles de cada arranque y apagado:
Nota: siempre “VBox.log” contendrá el último registro, los anteriores serán enumerados y conservados y si queremos monitorizar deberemos automatizar para que lea el registro siempre después de un “vagrant halt” o “vagrant destroy”. Los otros valores posibles son: info, warn y error. Si quisiéramos guardar absolutamente todo el registro de inicio deberemos enviar toda la salida hacia un fichero en la misma carpeta donde ejecutemos: “vagrant up –debug &> nuestro_registro.log” (el parámetro debug lleva dos guiones como prefijo).
Precaución: toda esta información que mandemos a registrar puede contener información personal y/o datos sensibles del equipo donde ejecutéis Vagrant. Cuidado.
Usando Pandora FMS como herramienta de monitorización
Aquí no hay “balas de plata” que solucionen todo, ya vimos que Vagrant tiene una muy particular manera de llevar sus registros. Por ello, la opción predeterminada que tenemos para monitorizar con Pandora FMS es como la de cualquier otro dispositivo, ya sea instalando un Agente Software o realizando una Monitorización Remota, teniendo la previsión de dotar una dirección IP a la máquina virtual Vagrant que permita comunicar con el servidor Pandora FMS, central o satélite.
Unos pasos más allá
Una vez hayamos experimentado trabajar con Archivos Vagrant de terceros, llegará el momento de crear nuestras propias máquinas virtuales bien personalizadas y listas para compartir con nuestros colegas. Para ello, deberemos utilizar Packer, una herramienta especialmente diseñada para tales tareas.
Cuando estemos muy experimentados incluso podremos revisar los logs sin necesidad de conectarnos vía SSH por medio de un artificio muy elaborado llamado codeyourinfra, que consiste en un servidor web apache con Jenkins, el cual nos permitirá el acceso de lectura.
No dudéis ni un instante en comunicaros con nosotros para que Pandora FMS comience a secundar labores en vuestra empresa u oficina. Tenemos años de experiencia y un equipo bien calificado a nivel internacional. ¡Hasta una próxima oportunidad!
Programador desde 1993 en KS7000.net.ve (desde 2014 soluciones en software libre para farmacias comerciales en Venezuela). Escribe regularmente para Pandora FMS y ofrece consejos en el foro. También colaborador entusiasta en Wikipedia y Wikidata. Machacador de hierros en gimnasios y cuando puede se ejercita en ciclismo también. Fanático de la ciencia ficción. Programmer since 1993 in KS7000.net.ve (since 2014 free software solutions for commercial pharmacies in Venezuela). He writes regularly for Pandora FMS and offers advice in the forum. Also an enthusiastic contributor to Wikipedia and Wikidata. Crusher of irons in gyms and when he can he exercises in cycling as well. Science fiction fan.