Uso básico de Vagrant para la creación de entornos de desarrollo.
- Introducción a Vagrant
- Accesso a las máquinas virtuales
- Varias máquinas virtuales con Vagrant
- Compartición de datos entre anfitrión y máquinas virtuales
- Empaquetado de máquinas virtuales
- Provisión de máquinas con Ansible
1. Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
Creación de entornos
de desarrollo con
Vagrant
Creación de entornos
de desarrollo con
Vagrant
Carlos Gimeno – cgimeno@bifi.es
Alberto Alcolea – alberto.alcolea@bifi.es
2. 2Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
0. Índice
Introducción a Vagrant
Introducción
Como empezar
Provisión
Acceso a las máquinas
Reenvío de puertos
Red privada
Red pública
Varias VM con Vagrant
Compartición de datos. Directorios Compartidos
Directorios VirtualBox
NFS
Rsync
SMB
Empaquetado de VM
VM funcionando en Vagrant
VM funcionando en VirtualBox
Provisión de Máquinas con Ansible
3. 3Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
1. Vagrant - Introducción
¿Qué es Vagrant?
Una herramienta de codigo abierto para la creacion
de ambientes virtuales de desarrollo.
Compatible con los principales serivicios de
virtualización, VirtualBox, VMWare...
4. 4Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
1. Vagrant - Introducción
¿Por qué necesito Vagrant?
5. 5Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
1. Vagrant – Como empezar
¿Como instalar Vagrant?
Apt-get install Vagrant
La versión de Vagrant de los repositorios de Ubuntu
no es la más actualizada, conviene bajar la más
nueva de la web de Vagrant
● https://www.vagrantup.com/downloads.html
6. 6Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
1. Vagrant – Como empezar
¿Qué necesito para mi primera máquina?
Vagrant box: Imagen especialmente preparada
para funcionar con Vagrant
● https://atlas.hashicorp.com/boxes/search
● http://www.vagrantbox.es/
● O podemos crearlas nosotros mismos...
7. 7Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
1. Vagrant – Como empezar
¿Qué necesito para mi primera máquina (II)?
Crear un nuevo directorio con un Vagrantfile.
Vagrantfile: Fichero en Ruby que describe la
configuración de la máquina virtual.
Dispone de multitud de opciones para la
configuración y provisión de nuestra máquina
virtual.
vagrant init nos creará un Vagrantfile por defecto
8. 8Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
1. Vagrant – Como empezar
¿Como levanto y me conecto a mi máquina?
Vagrant up: levanta la máquina virtual utilizando el
archivo de configuración Vagrantfile.
Vagrant ssh: Nos permite conectarnos a la
máquina.
9. 9Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
1. Vagrant – Provisión
¿Qué hacer una vez lanzada la máquina?
Normalmente nos interesa instalar una serie de
prgoramas por defecto en nuestra máquina.
Es una tarea tediosa instalar manualmente todos
los paquetes necesarios a mano.
10. 10Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
1. Vagrant – Provisión
¿Qué solución hay?
Solución: Automatización
Vagrant nos da varios mecanismos para realizar
tareas de forma automática.
11. 11Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
1. Vagrant – Provisión
Un ejercicio sencillo: Instalar apache2
12. 12Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
2. Vagrant – Acceso
¿Como accedo a los servicios de mi VM?
Reenvío de puertos
Red privada
Red pública
13. 13Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
2. Vagrant – Reenvío de puertos
¿En que consiste?
Permite que al acceder a un puerto determinado en
el host, todos los datos se envien a la VM
14. 14Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
2. Vagrant – Reenvío de puertos
¿Como reenvío los puertos en Vagrant?
15. 15Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
2. Vagrant – Reenvío de puertos
¿Qué ventajas y desventajas tiene?
Ventajas:
● Muy sencillo de configurar
● Suele ser más que suficiente en la mayoría de ocasiones
● Muy seguro, solo exponemos los puertos reenviados en la VM.
Desventajas
● Cuidado con utilizar puertos que ya se esten usando (opción
auto-correct)
● No podemos utilizar puertos por debajo del 1024, excepto que
Vagrant se ejecute como root (no recomendado)
16. 16Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
2. Vagrant – Red Privada
¿En que consiste?
Una red privada nos permite acceder a la VM
utilizando una IP que no es públicamente accesible
Podemos añadir más VM's a esta red privada y
todas podrán comunicarse entre ellas sin
problemas.
17. 17Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
2. Vagrant – Red Privada
¿Como defino redes privadas en Vagrant?
18. 18Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
2. Vagrant – Red Privada
¿Que ventajas y desventajas tiene?
Ventajas:
● Podemos crear redes “anfitrión-invitado” para compartir asi
servicios del anfitrión (NFS)
● Podemos añadir todas las máquinas virtuales que queramos a la
nueva red y comunicarlas.
Desventajas:
● Es un poco más complicado de configurar
● Hay que tener cuidado si se usan IP's estaticas
● Puede que Vagrant no configure automáticamente las interfaces
del anfitrión (depende del SO)
19. 19Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
2. Vagrant – Red pública
¿En que consiste?
Nos permite acceder a la VM como si fuera una
máquina física normal y corriente.
Es la opción más potente para acceder desde el
exterior de la VM.
20. 20Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
2. Vagrant – Red pública
¿Como defino una red pública en Vagrant?
De forma similar a una privada:
21. 21Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
2. Vagrant – Red pública
¿Que ventajas y desventajas tiene?
Ventajas:
● Podemos acceder a la máquina como si fuera una máquina
más de la red (cuidado con la seguridad)
● No estamos limitados a puertos superiores a 1024
Desventajas:
● Más complicado de configurar, hemos de tener IP's públicas
disponibles
● Al funcionar en modo bridge, no siempre es posible hacer
que funcione, sobre todo si no administramos las máquinas.
22. 22Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
3. Vagrant – Varias VM
¿Soporta Vagrant varias VM?
Hasta ahora hemos visto como lanzar una máquina
virtual
Para pruebas simples es suficiente
¿Qué ocurre en escenarios mas complejos?
● Un servidor web y una base de datos en máquinas
distintas
● Modelados de sistemas distribuidos
● Probar casos de recuperación ante un desastre...
23. 23Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
3. Vagrant – Varias VM
¿Qué opciones nos da Vagrant para este
problema?
24. 24Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
3. Vagrant – Varias VM
Solución: En el propio Vagrantfile
Vagrant nos permite definir en el Vagrantfile, más
de una máquina virtual, cada una con sus opciones
de configuración.
Es la solución ideal cuando queremos probar
escenarios más complejos, como los descritos
anteriormente.
25. 25Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
3. Vagrant – Varias VM
¿Como las defino en el Vagrantfile?
Muy sencillo
26. 26Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
4. Vagrant – Directorios
compartidos
¿Qué opciones tengo para compartir datos con
la VM?
Vagrant nos da varias opciones para compartir
datos con nuestra máquina virtual:
● Directorios sincronizados (VirtualBox)
● NFS
● Rsync
● SMB
27. 27Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
4. Vagrant – Directorios
compartidos
¿Qué son los directorios VirtualBox?
Es la opción más sencilla para compartir datos
Un directorio en el anfitrión, se hace visible en
nuestra máquina virtual en el directorio que
definamos.
No es una opción apropiada si buscamos
rendimiento
28. 28Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
4. Vagrant – Directorios
compartidos
¿Como comparto un directorio usando NFS?
Si estamos buscando rendimiento, montar el/los
directorios por NFS puede ser una buena idea
Requisitos: Tener instalado NFS en el anfitrión y
que el invitado soporte NFS
29. 29Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
4. Vagrant – Directorios
compartidos
Permisos al montar por NFS
A tener muy en cuenta: Es posible que al montar
por NFS nos solicite la contraseña para obtener
permisos de administración.
Solución ideal: modificar archivo sudoers
30. 30Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
4. Vagrant – Directorios
compartidos
¿Qué hacer si estas opciones no estan
disponibles?
Utilizar Rsync
Permite sincronizar un directorio entre el anfitrión y
la máquina virtual
Tiene que estar instalado rsync en ambas
máquinas.
31. 31Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
4. Vagrant – Directorios
compartidos
¿Y si estoy utilizando Vagrant en Windows?
O bien utilizamos la funcionalidad de Virtualbox
para compartir directorios
O bien sincronizamos los archivos utilizando SMB (
Server Message Block)
32. 32Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
5. Vagrant – Empaquetar una
VM
Quiero utilizar una VM como base en el futuro
¿Como lo hago?
Vagrant nos da la opción de empaquetar una
máquina que tengamos funcionando en el
formato .box de Vagrant para futuros usos.
33. 33Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
5. Vagrant – Empaquetar una
VM
¿Como lo hago?
Si queremos empaquetar una máquina de Vagrant
● vagrant package [--output] [--include] [--vagrantfile]
Si queremos empaquetar una máquina de
Virtualbox
● vagrant package --base
34. 34Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
5. Vagrant – Empaquetar una
VM
¿Por qué empaquetar una VM?
Es una forma sencilla de crear una VM para
reutilizar posteriormente sin tener que provisionarla
cada vez
Nos permite crear nuevas VM a partir de máquinas
que ya tengamos funcionando en VirtualBox
35. 35Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
5. Vagrant – Empaquetar una
VM
¿Como utilizar una imagen empaquetada por
nosotros?
vagrant box add <nombre> <archivo>
36. 36Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
6. Vagrant – Provision con
Ansible
¿Como utilizamos Ansible para la provision?
Utilizar shell para la provisión de VM es algo
factible para tareas sencillas, pero inviable para
tareas mas complejas
Es por ello que se hace el uso de herramientas
como las que hemos comentado al incio
37. 37Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
6. Vagrant – Provision con
Ansible
¿Por qué Ansible?
Es software libre.
Fácil de configurar.
Es “agent-less”, no requiere instalación de agentes
en las máquinas, solo OpenSSH.
En las últimas versiones soporta también Windows.
Fácil de trabajar con el, sus recetas son en formato
YAML (YAML Ain't Another Markup Language).
38. 38Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
6. Vagrant – Provision con
Ansible
Un ejercicio un poco menos simple:
Crear dos máquinas con Vagrant
Comunicarlas entre sí con una red privada
Objetivo final: Instalar un Wordpress
● Una de ellas tendrá el servidor web
● La otra, la base de datos
39. 39Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
Bibliografía
Para saber mas:
Documentación oficial
● http://docs.vagrantup.com/v2
40. 40Instituto de Biocomputación y Física de Sistemas Complejos • info@bifi.es • http://bifi.es
Preguntas
¿Alguna pregunta?