Tutorial de Vagrant

Category: VirtualBox 3 0

Vagrant es una herramienta para la gestión de máquinas virtuales utilizando una simple interfaz de línea de comandos. Se supone que hace todo el proceso ordenado y limpio sin tener su instalación principal contaminada con una tonelada de archivos de configuración.Vagrant utiliza VirtualBox en el backend donde se ejecutan las máquinas virtuales y si usted abre VirtualBox después de instalar algunas de estas cajas Vagrant, verá que hay nuevas máquinas virtuales que no estaban allí antes. Vagrant box es sólo otro término de máquinas virtuales manejadas específicamente por esta utilidad que estamos discutiendo.

¿Por qué molestarse?

Hashicorp, la empresa detrás de Vagrant mantiene un repositorio de muchas Vagrant Boxes que son imágenes de máquinas virtuales preconfiguradas a partir de las cuales se puede generar cualquier número de VMs localmente. Esto resuelve dos problemas:

  1. Como todo el mundo empieza con la misma imagen, los desarrolladores pueden deshacerse de la excusa de «funciona en mi máquina», en la que una determinada aplicación funcionaría perfectamente en una máquina, pero no en otra. Todo el mundo desarrolla en diferentes máquinas, pero se ejecuta exactamente en la misma configuración de la máquina virtual.
  2. No tienes que hacer una instalación repetida de Máquinas Virtuales si decides deshacerte de las antiguas. Vagrant se encarga de toda la instalación y configuración de tu VM. Todo, desde la asignación de almacenamiento y memoria hasta la creación de usuarios y la configuración de permisos.

En muchos sentidos, es similar a las imágenes Docker y resuelve problemas similares, con la diferencia clave de que utiliza VMs en lugar de contenedores haciéndola, decididamente, una alternativa más pesada y lenta. Sin embargo, las máquinas virtuales vienen con sus propias ventajas como una mejor pila de redes y más flexibilidad en términos de elección del sistema de archivos, etc permitiendo a Vagrant llenar un nicho particular de las VMs portátiles.

¡Así que vamos a empezar!

Requisitos previos

El primer y más importante requisito es la instalación de VirtualBox después de lo cual usted debe instalar Vagrant. Si tienes VirtualBox ya instalado sólo tienes que coger este último. El proceso de instalación puede ser muy diferente dependiendo del sistema operativo que esté ejecutando su anfitrión, por lo que le insto a consultar los documentos oficiales para eso:

  1. Consigue VirtualBox aquí
  2. Consigue Vagrant aquí

Además, si estás usando Windows necesitarás un cliente SSH, puedes instalar Git Bash que funciona perfectamente en Windows con las opciones de instalación por defecto.

1. Cajas Vagrant

Vagrant Box es el término para las máquinas virtuales que son administradas por Vagrant. Usted puede obtener cajas Vagrant que contienen sólo el sistema operativo como Ubuntu, CentOS, etc. O pueden contener una pila LAMP preconfigurada, una pila MEAN u otro tipo de instalación de software que puede facilitar el proceso de desarrollo y pruebas.

Por ejemplo, si estás escribiendo un tema de WordPress, puedes obtener una caja Vagrant con el núcleo de WordPress ya funcionando en ella. Puedes compartir tu carpeta de proyecto donde tienes el contenido de tu tema con esta VM. Comprueba si el nuevo tema funciona como esperabas. Una vez que hayas terminado con el tema, simplemente destruye la caja dejando sólo los archivos del proyecto que ahora sabes que funcionarán bien en el mundo real.

Puedes explorar estas cajas aquí. Vamos a empezar con una caja simple de Ubuntu 16.04 LTS. Usted puede ver que aparece como ubuntuxenial64, si usted visita el enlace anterior.

Abre tu terminal y crea una carpeta para tus experimentos con Vagrant.

$ mkdir vagrant_box
$ cd vagrant_box

En esta carpeta, podemos inicializar nuestro entorno Vagrant ejecutando:

$ vagrant init

Esto coloca un Vagrantfile dentro de la carpeta que es esencialmente un script Ruby que describe la configuración de su Vagrant Box. No necesitas saber Ruby para usar este archivo, la sintaxis es bastante simple. Cubriremos lo esencial a medida que avancemos.

Ahora puedes ejecutar el comando vagrant up y como es la primera vez que lo ejecutas, tendrá que descargar la imagen de la máquina virtual desde app.vagrantup.com. Puede tardar bastante dependiendo de tu conexión a internet, pero una vez descargada, los siguientes comandos vagrant up para ubuntuxenial64 similares a vagrant init no tardarán tanto porque la imagen está ahora guardada localmente en tu ordenador. Asegúrese de que usted está en el mismo directorio (vagrant_box) donde Vagrantfile se colocó anteriormente.

$ vagrant up

Después de que esto termine, puedes hacer ssh en la caja como el usuario vagrant con privilegios de root. Simplemente ejecuta lo siguiente:

$ vagrant ssh

¡Felicidades! Acabas de entrar en tu primera Vagrant Box. Ahora que la tenemos iniciada, vamos a aprender algunos comandos básicos de vagrant antes de profundizar en el Vagrantfile. Simplemente escribe exit y pulsa para salir de la terminal de la VM. La caja de vagrant seguirá funcionando en segundo plano.

Comando común de Vagrant

Si desea detener la caja en ejecución, ejecute el comando:

$ vagrant halt

Para reiniciar puedes usar vagrant up

Si quieres, también puedes usar

$ vagrant suspender
$ vagrant resume

Estos suspenderán la VM y la traerán de vuelta de forma segura. Si haces cambios en el archivo de Vagrant y quieres que los cambios aparezcan, usa el comando

$ vagrant reload

Recuerda ejecutar todos los comandos desde el mismo directorio donde se encuentra tu Vagrantfile. Puedes crear más cajas vagrant si creas nuevos directorios en otro lugar y ejecutas vagrant init en ellos. Las administrarás desde sus respectivas carpetas. Pueden estar basadas en la misma imagen ubuntuxenial que obtuvimos antes, o puedes traer más imagen.

Para listar todas las cajas vagrant y su estado (en ejecución, o detenidas), utiliza el comando

$ vagrant global-status

Para eliminar una caja vagrant y todo su contenido privado, desde el directorio de la caja (donde se encuentra su respectivo Vagrantfile) ejecuta:

$ vagrant destroy

La imagen base que descargaste anteriormente seguirá existiendo si deseas crear nuevas cajas más adelante. Si desea ver todas las imágenes que están guardadas localmente, ejecute:

$ vagrant box list

Para eliminar la imagen de la caja en sí, ejecute:

$ vagrant box remove

Después de esto tendrás que volver a descargar la caja, en caso de que sea necesario.

Inspección del archivo Vagrant

A primera vista puede parecer que hay un montón de opciones dentro de un Vagrantfile. Mientras que, eso puede muy bien ser cierto, es interesante notar lo mucho que se puede lograr con sólo un poco de ajuste.

1. La carpeta compartida

La mayoría de las cajas vagrant vienen con las carpetas compartidas preconfiguradas. Por ejemplo, si inspeccionas el Vagrantfile que creamos la primera vez que ejecutamos vagrant init notarás la entrada, que es una línea comentada,

config.vm.synced_folder «..data», «vagrant»

La carpeta sincronizada puede ser accedida tanto por la caja vagrant como por la máquina anfitriona. El primer argumento después de config.vm.synced_folder indica la ruta de la carpeta en el host y el segundo argumento indica la ruta donde se montará esa carpeta en la caja vagrant invitada. Por defecto, la carpeta donde se ha creado el Vagrantfile también se comparte con la caja vagrant.

Verifiquemos esto, ingresando por ssh a nuestra caja vagrant.

$ vagrant ssh

Aquí, lista los sistemas de archivos.

$ df -h

Puedes ver que hay un gran sistema de archivos vagrant montado en la ruta de vagrant. La razón por la que es tan grande, es porque la carpeta Vagrantfile en mi máquina anfitriona está en una partición que es 632GB grande y carpeta de allí puede crecer a ese tamaño también. Dado que es la misma carpeta que se está compartiendo con la caja, proporciona una cantidad insana de almacenamiento.

Puedes inspeccionar el contenido de vagrant y es el mismo que ves en tu host, es decir, un Vagrantfile y otro archivo de registro.

Puedes añadir más carpetas compartidas donde aparece el comentario que explica la sintaxis de las carpetas compartidas.

Así,

En este caso, se está añadiendo una carpeta llamada SharedFolder, que está un directorio por encima, de ahí el doble punto que le precede. Esta carpeta se monta en varwwwhtml en el interior de la caja. Aquí es donde la mayoría de los servidores web como apache y nginx buscan los contenidos web que quieren servir.

Puedes simplemente tener tus archivos de proyecto, tu html, css y js en SharedFolder donde trabajas en él en tu máquina anfitriona usando editores de texto gráficos como Atom y VSCode . La caja vagrant actuará como el servidor de grado de producción que serviría estos archivos.

Ahora la pregunta es, ¿cómo podemos ver estos archivos html que se sirve como una página web. ¿Qué nombre de host introducir en el navegador?

2. Red

Por defecto, vagrant proporciona algunas configuraciones útiles. La solicitud enviada por su navegador a localhost en el puerto 8080 se reenvía al puerto 80 en su caja vagrant. Así que si usted tiene un servidor web que se ejecuta en su caja vagrant que escucha en el puerto 80 (puerto http estándar), entonces usted puede ver esa página web visitando http:/localhost:8080

Por otra parte, es posible que desee evitar todo el reenvío de puertos localhost en cuyo caso, puede abrir el Vagrantfile y descomentar la siguiente línea:

config.vm.network «private_network», ip: «192.168.33.10»

Guarda los cambios realizados y ejecuta vagrant reload para reiniciar la caja con la nueva configuración. Ahora tiene una dirección ip privada dedicada 192.168.33.10 a la que sólo puede acceder tu host. Así que ahora puedes abrir el navegador e introducir http:/192.168.33.10 y podrás ver las páginas web que se sirven en el puerto estándar 80 de http.

Conclusión

Como puedes ver, Vagrant puede ayudarte a ejecutar tus aplicaciones localmente como lo harían en producción al mismo tiempo que puedes trabajar con ellas usando IDEs y editores de texto que no tendrías en un servidor típico. El uso de carpetas compartidas y redes privadas mejora enormemente esta capacidad de Vagrant.

Háganos saber si tiene más preguntas con respecto a este tutorial, o si hay algún otro tema que quiera que cubramos.

Related Articles

Add Comment