SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
VAGRANT
VIRTUALIZANDO ENTORNOS
     DE DESARROLLO




                  Daniel Vigueras
                  daniel@scalia.es
                  @danielvigueras
ESCENARIO 1
Desarrollador de varios proyectos con diferentes entornos conflictivos
entre sí




  Ruby 1.8         PHP 5.2                         Ruby 1.9                            PHP 5.3
  Rails 1.2        CodeIgniter                     Rails 3.2                           Vevui
  MySQL 4.1        MySQL 5.0                       MySQL 5.5                           MongoDB 2.2



                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
ESCENARIO 2

Equipo de desarrollo con diferentes sistemas operativos
XAMP, WAMP, MAMP, LAMP, Apache, Nginx...
Instalar librerías y servicios (Memcached, Redis, MongoDB, Sphinx...)




                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
SOLUCIÓN
¡ Usar máquinas virtuales para cada entorno de desarrollo !




                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
PROBLEMAS
¿Qué entorno de virtualización elijo?
   ¿VMWare? ¿VirtualBox? ¿KVM? ¿Xen?
¿Cómo creo una máquina virtual?
Me da pereza instalar un nuevo sistema operativo...
¿Cómo comparto el entorno con otras personas?
¿Y si quiero cambiar de entorno de virtualización ?




                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
PROBLEMAS
¿Qué entorno de virtualización elijo?
   ¿VMWare? ¿VirtualBox? ¿KVM? ¿Xen?
¿Cómo creo una máquina virtual?
Me da pereza instalar un nuevo sistema operativo...
¿Cómo comparto el entorno con otras personas?
¿Y si quiero cambiar de entorno de virtualización ?




                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
PROBLEMAS
¿Qué entorno de virtualización elijo?
   ¿VMWare? ¿VirtualBox? ¿KVM? ¿Xen?
¿Cómo creo una máquina virtual?
Me da pereza instalar un nuevo sistema operativo...
¿Cómo comparto el entorno con otras personas?
¿Y si quiero cambiar de entorno de virtualización ?




Usar herramienta independiente del entorno de virtualización que nos
oculte los detalles


                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
SOLUCIÓN: VAGRANT



Crear, iniciar, detener y eliminar VMs de manera sencilla
Escrito en ruby
Open source ( http://github.com/mitchellh/vagrant )
Actualmente sólo es capaz de controlar Oracle VM VirtualBox
En el futuro soportará cualquier entorno mediante plugins
Está siendo usado por varias empresas importantes




                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
SOLUCIÓN: VAGRANT



Crear, iniciar, detener y eliminar VMs de manera sencilla
Escrito en ruby
Open source ( http://github.com/mitchellh/vagrant )
Actualmente sólo es capaz de controlar Oracle VM VirtualBox
En el futuro soportará cualquier entorno mediante plugins
Está siendo usado por varias empresas importantes



          « ¡¡ En mi ordenador funciona !! »

                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
OBTENER VAGRANT
Descargar e instalar Oracle VM VirtualBox de http://www.virtualbox.org (Última versión 4.2)
Descargar e instalar Vagrant de http://vagrantup.com (Última versión 1.0.4)
Mac (DMG), Linux (DEB, RPM), Windows (MSI)




                                Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
INICIO RÁPIDO (I)




    Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
INICIO RÁPIDO (I)

Añadir una primera imagen como base




                     Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
INICIO RÁPIDO (I)

Añadir una primera imagen como base

$	
  vagrant	
  box	
  add	
  base	
  http://files.vagrantup.com/lucid32.box




                               Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
INICIO RÁPIDO (I)

Añadir una primera imagen como base

 $	
  vagrant	
  box	
  add	
  base	
  http://files.vagrantup.com/lucid32.box



Crear fichero de configuración inicial ( Vagrantfile )




                                Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
INICIO RÁPIDO (I)

Añadir una primera imagen como base

 $	
  vagrant	
  box	
  add	
  base	
  http://files.vagrantup.com/lucid32.box



Crear fichero de configuración inicial ( Vagrantfile )

 $	
  vagrant	
  init




                                Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
INICIO RÁPIDO (I)

Añadir una primera imagen como base

 $	
  vagrant	
  box	
  add	
  base	
  http://files.vagrantup.com/lucid32.box



Crear fichero de configuración inicial ( Vagrantfile )

 $	
  vagrant	
  init



Iniciar máquina virtual




                                Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
INICIO RÁPIDO (I)

Añadir una primera imagen como base

 $	
  vagrant	
  box	
  add	
  base	
  http://files.vagrantup.com/lucid32.box



Crear fichero de configuración inicial ( Vagrantfile )

 $	
  vagrant	
  init



Iniciar máquina virtual

 $	
  vagrant	
  up




                                Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
INICIO RÁPIDO (II)
Resultado de ejecución
 $	
  vagrant	
  box	
  add	
  base	
  http://files.vagrantup.com/lucid32.box
 [vagrant]	
  Downloading	
  with	
  Vagrant::Downloaders::HTTP...
 [vagrant]	
  Downloading	
  box:	
  http://files.vagrantup.com/lucid32.box
 [vagrant]	
  Extracting	
  box...
 [vagrant]	
  Verifying	
  box...
 [vagrant]	
  Cleaning	
  up	
  downloaded	
  box...

 $	
  vagrant	
  init
 A	
  `Vagrantfile`	
  has	
  been	
  placed	
  in	
  this	
  directory.	
  You	
  are	
  now
 ready	
  to	
  `vagrant	
  up`	
  your	
  first	
  virtual	
  environment!	
  Please	
  read
 the	
  comments	
  in	
  the	
  Vagrantfile	
  as	
  well	
  as	
  documentation	
  on
 `vagrantup.com`	
  for	
  more	
  information	
  on	
  using	
  Vagrant.
 $	
  vagrant	
  up
 [default]	
  VM	
  already	
  created.	
  Booting	
  if	
  it's	
  not	
  already	
  running...
 [default]	
  Clearing	
  any	
  previously	
  set	
  forwarded	
  ports...
 [default]	
  Forwarding	
  ports...
 [default]	
  -­‐-­‐	
  22	
  =>	
  2222	
  (adapter	
  1)
 [default]	
  Creating	
  shared	
  folders	
  metadata...
 [default]	
  Clearing	
  any	
  previously	
  set	
  network	
  interfaces...
 [default]	
  Booting	
  VM...
 [default]	
  Waiting	
  for	
  VM	
  to	
  boot.	
  This	
  can	
  take	
  a	
  few	
  minutes.
 [default]	
  VM	
  booted	
  and	
  ready	
  for	
  use!
 [default]	
  Mounting	
  shared	
  folders...
 [default]	
  -­‐-­‐	
  v-­‐root:	
  /vagrant
                                   Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
INICIO RÁPIDO (III)
Accediendo por SSH

 $	
  vagrant	
  ssh
 Linux	
  lucid32	
  2.6.32-­‐38-­‐generic	
  #83-­‐Ubuntu	
  SMP	
  Wed	
  Jan	
  4	
  11:13:04	
  UTC	
  
 2012	
  i686	
  GNU/Linux
 Ubuntu	
  10.04.4	
  LTS
 Welcome	
  to	
  Ubuntu!
 	
  *	
  Documentation:	
  	
  https://help.ubuntu.com/
 New	
  release	
  'precise'	
  available.
 Run	
  'do-­‐release-­‐upgrade'	
  to	
  upgrade	
  to	
  it.
 Welcome	
  to	
  your	
  Vagrant-­‐built	
  virtual	
  machine.
 Last	
  login:	
  Fri	
  Sep	
  14	
  07:26:29	
  2012	
  from	
  10.0.2.2
 vagrant@lucid32:~$	
  ifconfig	
  eth0|grep	
  inet
 	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  inet	
  addr:10.0.2.15	
  	
  Bcast:10.0.2.255	
  	
  Mask:255.255.255.0
 	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  inet6	
  addr:	
  fe80::a00:27ff:feb5:756c/64	
  Scope:Link
 vagrant@lucid32:~$	
  ping	
  -­‐c	
  1	
  www.google.es
 PING	
  www.google.es	
  (173.194.34.216)	
  56(84)	
  bytes	
  of	
  data.
 64	
  bytes	
  from	
  mad01s08-­‐in-­‐f24.1e100.net	
  (173.194.34.216):	
  icmp_seq=1	
  
 ttl=63	
  time=85.0	
  ms
 -­‐-­‐-­‐	
  www.google.es	
  ping	
  statistics	
  -­‐-­‐-­‐
 1	
  packets	
  transmitted,	
  1	
  received,	
  0%	
  packet	
  loss,	
  time	
  0ms
 rtt	
  min/avg/max/mdev	
  =	
  85.038/85.038/85.038/0.000	
  ms


                                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
INICIO RÁPIDO (IV)
Suspender, despertar, detener y destruir la VM

 $	
  vagrant	
  suspend
 [default]	
  Saving	
  VM	
  state	
  and	
  suspending	
  execution...
 $	
  vagrant	
  resume
 [default]	
  Resuming	
  suspended	
  VM...
 [default]	
  Booting	
  VM...
 [default]	
  Waiting	
  for	
  VM	
  to	
  boot.	
  This	
  can	
  take	
  a	
  few	
  minutes.
 [default]	
  VM	
  booted	
  and	
  ready	
  for	
  use!
 $	
  vagrant	
  halt
 [default]	
  Attempting	
  graceful	
  shutdown	
  of	
  VM...

 $	
  vagrant	
  destroy
 Are	
  you	
  sure	
  you	
  want	
  to	
  destroy	
  the	
  'default'	
  VM?	
  [Y/N]	
  Y
 [default]	
  Destroying	
  VM	
  and	
  associated	
  drives...




                                       Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
CONFIGURACIÓN

Elementos importantes del fichero Vagrantfile
Vagrant::Config.run	
  do	
  |config|
	
  	
  #	
  Alias	
  local	
  de	
  la	
  VM	
  base
	
  	
  config.vm.box	
  =	
  "base"

	
  	
  #	
  URL	
  de	
  dónde	
  descargar	
  la	
  VM	
  en	
  caso	
  de	
  no	
  tenerla
	
  	
  config.vm.box_url	
  =	
  "http://files.vagrantup.com/lucid32.box"

	
  	
  #	
  Tipo	
  de	
  arranque	
  (Podría	
  ser	
  :gui)
	
  	
  config.vm.boot_mode	
  =	
  :headless

	
  	
  #	
  Modo	
  de	
  red	
  (Podría	
  ser	
  :bridged)
	
  	
  config.vm.network	
  :hostonly,	
  "192.168.33.10"

	
  	
  #	
  Redirigir	
  puerto	
  8000	
  en	
  host	
  hacia	
  el	
  puerto	
  80	
  en	
  VM
	
  	
  config.vm.forward_port	
  80,	
  8000
	
  	
  #	
  Directorio	
  compartido
	
  	
  config.vm.share_folder("v-­‐root",	
  "/vagrant",	
  ".")
end
                                          Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
AUTOMATIZACIÓN (I)

Una VM vacía no nos sirve de mucho
Para empezar un proyecto necesitamos ciertas herramientas
A mitad del proyecto es muy probable que necesitemos más
Es necesario automatizar la instalación y configuración de software




                       Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
AUTOMATIZACIÓN (I)

Una VM vacía no nos sirve de mucho
Para empezar un proyecto necesitamos ciertas herramientas
A mitad del proyecto es muy probable que necesitemos más
Es necesario automatizar la instalación y configuración de software




                       Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
AUTOMATIZACIÓN (II)




Declarativo                                     Imperativo (ruby)
Clases y módulos                                Recetas
Maduro (2005)                                   Más reciente (2009)
Extendido                                       Menos extendido



                   Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
EJEMPLO CON PUPPET (I)
Vagrant::Config.run	
  do	
  |config|
	
  	
  #	
  Alias	
  local	
  de	
  la	
  VM	
  base
	
  	
  config.vm.box	
  =	
  "base"

	
  	
  #	
  URL	
  de	
  dónde	
  descargar	
  la	
  VM	
  en	
  caso	
  de	
  no	
  tenerla
	
  	
  config.vm.box_url	
  =	
  "http://files.vagrantup.com/lucid32.box"

	
  	
  #	
  Modo	
  de	
  red	
  (Podría	
  ser	
  :bridged)
	
  	
  config.vm.network	
  :hostonly,	
  "192.168.33.10"

	
  	
  #	
  Directorio	
  compartido
	
  	
  config.vm.share_folder("v-­‐root",	
  "/vagrant",	
  ".")
	
  	
  
	
  	
  #	
  Usar	
  puppet/ejemplo.pp	
  como	
  fichero	
  de	
  manifiesto	
  puppet
	
  	
  config.vm.provision	
  :puppet	
  do	
  |puppet|
	
  	
  	
  	
  puppet.manifests_path	
  =	
  "puppet"
	
  	
  	
  	
  puppet.manifest_file	
  =	
  "ejemplo.pp"
	
  	
  end
end


                                      Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
EJEMPLO CON PUPPET (II)
Contenido de puppet/ejemplo.pp


 exec	
  {"apt-­‐get-­‐update":"apt-­‐get-­‐update":
 	
  	
  	
  	
  creates	
  =>	
  "/tmp/apt-­‐get-­‐updated",
 	
  	
  	
  	
  command	
  =>	
  "/usr/bin/apt-­‐get	
  update	
  &&	
  /usr/bin/touch	
  /tmp/apt-­‐
 get-­‐updated"
 }

 package	
  {"apache2":
 	
  	
  	
  	
  ensure	
  =>	
  present,
 	
  	
  	
  	
  require	
  =>	
  Exec["apt-­‐get-­‐update"],
 }

 $php	
  =	
  ["php5-­‐cli",	
  "php5-­‐mysql",	
  "libapache2-­‐mod-­‐php5"]
 package	
  {	
  $php:
 	
  	
  	
  	
  ensure	
  =>	
  present,
 	
  	
  	
  	
  notify	
  =>	
  Service["apache2"],
 	
  	
  	
  	
  require	
  =>	
  Exec["apt-­‐get-­‐update"]
 }



                                       Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
EJEMPLO CON PUPPET (III)
Agregando soporte a MySQL
 $mysql	
  =	
  ["mysql-­‐server",	
  "mysql-­‐client"]
 package	
  {	
  $mysql:
 	
  	
  	
  	
  ensure	
  =>	
  present,
 	
  	
  	
  	
  require	
  =>	
  Exec["apt-­‐get-­‐update"]
 }

 file	
  {"/etc/mysql/my.cnf":
 	
   ensure	
   =>	
  file,
 	
   owner	
  =>	
  "root",
 	
   group	
  =>	
  "root",
 	
   mode	
   =>	
  644,
 	
   source	
   =>	
  "/vagrant/puppet/files/mysql/my.cnf",
 	
   require	
   =>	
  Package[$mysql],
 	
   notify	
   =>	
  Service["mysql"],
 }

 service	
  {"mysql":
 	
   enable	
   =>	
  true,
 	
   ensure	
   =>	
  running,
 	
   require	
   =>	
  Package[$mysql],
 }
                                    Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
RESUMEN



Vagrant es una herramienta muy potente

Réplica en desarrollo del entorno de producción

Si aún no la usas estás perdiendo tiempo y dinero...




                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
RESUMEN



Vagrant es una herramienta muy potente

Réplica en desarrollo del entorno de producción

Si aún no la usas estás perdiendo tiempo y dinero...




                        Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras

Más contenido relacionado

La actualidad más candente

Evolución de la admon. sistemas
Evolución de la admon. sistemasEvolución de la admon. sistemas
Evolución de la admon. sistemasV. Javierf Fdez
 
Solapas principales Ver(solapa activa) Editar Gestionar present...
 Solapas principales      Ver(solapa activa)     Editar     Gestionar present... Solapas principales      Ver(solapa activa)     Editar     Gestionar present...
Solapas principales Ver(solapa activa) Editar Gestionar present...Software Guru
 
Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...Christian Rodriguez
 
Oracle VM VirtualBox Hacked
Oracle VM VirtualBox HackedOracle VM VirtualBox Hacked
Oracle VM VirtualBox HackedV. Javierf Fdez
 
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)Adrian Garcia Casas
 
nerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshopnerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshopRestorando
 
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...Edgar A. Cruz Huaman
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualizaciónMarcelo Ochoa
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open sourcescrumecuador
 
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Modernowpargentina
 
Una introducción a vagrant
Una introducción a vagrantUna introducción a vagrant
Una introducción a vagrantLaura Gimenoide
 
Sandbox para ejercicios de programación
Sandbox para ejercicios de programaciónSandbox para ejercicios de programación
Sandbox para ejercicios de programaciónMario Garcia-Valdez
 

La actualidad más candente (20)

Evolución de la admon. sistemas
Evolución de la admon. sistemasEvolución de la admon. sistemas
Evolución de la admon. sistemas
 
Exprime al máximo la capacidad de tus servidores gracias a la virtualización ...
Exprime al máximo la capacidad de tus servidores gracias a la virtualización ...Exprime al máximo la capacidad de tus servidores gracias a la virtualización ...
Exprime al máximo la capacidad de tus servidores gracias a la virtualización ...
 
Introduccion A Docker
Introduccion A DockerIntroduccion A Docker
Introduccion A Docker
 
Vagrant
VagrantVagrant
Vagrant
 
Solapas principales Ver(solapa activa) Editar Gestionar present...
 Solapas principales      Ver(solapa activa)     Editar     Gestionar present... Solapas principales      Ver(solapa activa)     Editar     Gestionar present...
Solapas principales Ver(solapa activa) Editar Gestionar present...
 
Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...
 
Oracle VM VirtualBox Hacked
Oracle VM VirtualBox HackedOracle VM VirtualBox Hacked
Oracle VM VirtualBox Hacked
 
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
 
nerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshopnerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshop
 
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
Meetup V.E.No.M. y docker
Meetup V.E.No.M. y dockerMeetup V.E.No.M. y docker
Meetup V.E.No.M. y docker
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open source
 
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
 
Conceptos avanzados en docker
Conceptos avanzados en dockerConceptos avanzados en docker
Conceptos avanzados en docker
 
Una introducción a vagrant
Una introducción a vagrantUna introducción a vagrant
Una introducción a vagrant
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Sandbox para ejercicios de programación
Sandbox para ejercicios de programaciónSandbox para ejercicios de programación
Sandbox para ejercicios de programación
 
Virtualenv y buildout
Virtualenv y buildoutVirtualenv y buildout
Virtualenv y buildout
 

Destacado

Dev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónDev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónKleer Agile Coaching & Training
 
Curso puppet lenguaje_2
Curso puppet lenguaje_2Curso puppet lenguaje_2
Curso puppet lenguaje_2martacdehesa
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoSergio Zambrano Delfa
 
Dev ops. Rompiendo Barreras
Dev ops. Rompiendo BarrerasDev ops. Rompiendo Barreras
Dev ops. Rompiendo BarrerasJuan Mauricio
 

Destacado (6)

Discovering New Apps
Discovering New AppsDiscovering New Apps
Discovering New Apps
 
Dev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónDev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producción
 
Curso puppet lenguaje_2
Curso puppet lenguaje_2Curso puppet lenguaje_2
Curso puppet lenguaje_2
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de uso
 
Dev ops. Rompiendo Barreras
Dev ops. Rompiendo BarrerasDev ops. Rompiendo Barreras
Dev ops. Rompiendo Barreras
 
Gestionando servidores con Puppet
Gestionando servidores con PuppetGestionando servidores con Puppet
Gestionando servidores con Puppet
 

Similar a Vagrant virtualiza entornos desarrollo

Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Keopx
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJCMicael Gallego
 
Entornos de desarrollo portables, reproducibles y ligeros
Entornos de desarrollo portables, reproducibles y ligerosEntornos de desarrollo portables, reproducibles y ligeros
Entornos de desarrollo portables, reproducibles y ligerosbetabeers
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando dockerChristian Rodriguez
 
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - QuaipWordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaipquaip
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARPablo Godel
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-dockerCLEFormación
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandboxTensor
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
CuckoosandboxTensor
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandboxTensor
 
DockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdfDockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdfAngel Borroy López
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 

Similar a Vagrant virtualiza entornos desarrollo (20)

Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 
Docker
DockerDocker
Docker
 
Entornos de desarrollo portables, reproducibles y ligeros
Entornos de desarrollo portables, reproducibles y ligerosEntornos de desarrollo portables, reproducibles y ligeros
Entornos de desarrollo portables, reproducibles y ligeros
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando docker
 
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - QuaipWordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-docker
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
Cuckoosandbox
 
VIRTUALBOX
VIRTUALBOX VIRTUALBOX
VIRTUALBOX
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
Dockers y wp
Dockers y wpDockers y wp
Dockers y wp
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
DockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdfDockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdf
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Primeros pasos con Docker
Primeros pasos con DockerPrimeros pasos con Docker
Primeros pasos con Docker
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 

Más de betabeers

IONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformaIONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformabetabeers
 
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)betabeers
 
Blockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar LageBlockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar Lagebetabeers
 
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica MediavillaCloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica Mediavillabetabeers
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilónbetabeers
 
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito -  Jon Torrado - Betabeers BilbaoLa línea recta hacia el éxito -  Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbaobetabeers
 
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu appbetabeers
 
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)betabeers
 
Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)betabeers
 
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)betabeers
 
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)betabeers
 
Elemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de UsoElemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de Usobetabeers
 
Seguridad en tu startup
Seguridad en tu startupSeguridad en tu startup
Seguridad en tu startupbetabeers
 
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.betabeers
 
Buenas prácticas para la optimización web
Buenas prácticas para la optimización webBuenas prácticas para la optimización web
Buenas prácticas para la optimización webbetabeers
 
La magia de Scrum
La magia de ScrumLa magia de Scrum
La magia de Scrumbetabeers
 
Programador++ por @wottam
Programador++ por @wottamProgramador++ por @wottam
Programador++ por @wottambetabeers
 
RaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoTRaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoTbetabeers
 
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015betabeers
 
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015betabeers
 

Más de betabeers (20)

IONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformaIONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataforma
 
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
 
Blockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar LageBlockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar Lage
 
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica MediavillaCloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilón
 
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito -  Jon Torrado - Betabeers BilbaoLa línea recta hacia el éxito -  Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
 
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
 
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
 
Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)
 
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
 
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
 
Elemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de UsoElemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de Uso
 
Seguridad en tu startup
Seguridad en tu startupSeguridad en tu startup
Seguridad en tu startup
 
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
 
Buenas prácticas para la optimización web
Buenas prácticas para la optimización webBuenas prácticas para la optimización web
Buenas prácticas para la optimización web
 
La magia de Scrum
La magia de ScrumLa magia de Scrum
La magia de Scrum
 
Programador++ por @wottam
Programador++ por @wottamProgramador++ por @wottam
Programador++ por @wottam
 
RaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoTRaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoT
 
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
 

Vagrant virtualiza entornos desarrollo

  • 1. VAGRANT VIRTUALIZANDO ENTORNOS DE DESARROLLO Daniel Vigueras daniel@scalia.es @danielvigueras
  • 2. ESCENARIO 1 Desarrollador de varios proyectos con diferentes entornos conflictivos entre sí Ruby 1.8 PHP 5.2 Ruby 1.9 PHP 5.3 Rails 1.2 CodeIgniter Rails 3.2 Vevui MySQL 4.1 MySQL 5.0 MySQL 5.5 MongoDB 2.2 Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 3. ESCENARIO 2 Equipo de desarrollo con diferentes sistemas operativos XAMP, WAMP, MAMP, LAMP, Apache, Nginx... Instalar librerías y servicios (Memcached, Redis, MongoDB, Sphinx...) Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 4. SOLUCIÓN ¡ Usar máquinas virtuales para cada entorno de desarrollo ! Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 5. PROBLEMAS ¿Qué entorno de virtualización elijo? ¿VMWare? ¿VirtualBox? ¿KVM? ¿Xen? ¿Cómo creo una máquina virtual? Me da pereza instalar un nuevo sistema operativo... ¿Cómo comparto el entorno con otras personas? ¿Y si quiero cambiar de entorno de virtualización ? Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 6. PROBLEMAS ¿Qué entorno de virtualización elijo? ¿VMWare? ¿VirtualBox? ¿KVM? ¿Xen? ¿Cómo creo una máquina virtual? Me da pereza instalar un nuevo sistema operativo... ¿Cómo comparto el entorno con otras personas? ¿Y si quiero cambiar de entorno de virtualización ? Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 7. PROBLEMAS ¿Qué entorno de virtualización elijo? ¿VMWare? ¿VirtualBox? ¿KVM? ¿Xen? ¿Cómo creo una máquina virtual? Me da pereza instalar un nuevo sistema operativo... ¿Cómo comparto el entorno con otras personas? ¿Y si quiero cambiar de entorno de virtualización ? Usar herramienta independiente del entorno de virtualización que nos oculte los detalles Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 8. SOLUCIÓN: VAGRANT Crear, iniciar, detener y eliminar VMs de manera sencilla Escrito en ruby Open source ( http://github.com/mitchellh/vagrant ) Actualmente sólo es capaz de controlar Oracle VM VirtualBox En el futuro soportará cualquier entorno mediante plugins Está siendo usado por varias empresas importantes Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 9. SOLUCIÓN: VAGRANT Crear, iniciar, detener y eliminar VMs de manera sencilla Escrito en ruby Open source ( http://github.com/mitchellh/vagrant ) Actualmente sólo es capaz de controlar Oracle VM VirtualBox En el futuro soportará cualquier entorno mediante plugins Está siendo usado por varias empresas importantes « ¡¡ En mi ordenador funciona !! » Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 10. OBTENER VAGRANT Descargar e instalar Oracle VM VirtualBox de http://www.virtualbox.org (Última versión 4.2) Descargar e instalar Vagrant de http://vagrantup.com (Última versión 1.0.4) Mac (DMG), Linux (DEB, RPM), Windows (MSI) Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 11. INICIO RÁPIDO (I) Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 12. INICIO RÁPIDO (I) Añadir una primera imagen como base Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 13. INICIO RÁPIDO (I) Añadir una primera imagen como base $  vagrant  box  add  base  http://files.vagrantup.com/lucid32.box Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 14. INICIO RÁPIDO (I) Añadir una primera imagen como base $  vagrant  box  add  base  http://files.vagrantup.com/lucid32.box Crear fichero de configuración inicial ( Vagrantfile ) Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 15. INICIO RÁPIDO (I) Añadir una primera imagen como base $  vagrant  box  add  base  http://files.vagrantup.com/lucid32.box Crear fichero de configuración inicial ( Vagrantfile ) $  vagrant  init Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 16. INICIO RÁPIDO (I) Añadir una primera imagen como base $  vagrant  box  add  base  http://files.vagrantup.com/lucid32.box Crear fichero de configuración inicial ( Vagrantfile ) $  vagrant  init Iniciar máquina virtual Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 17. INICIO RÁPIDO (I) Añadir una primera imagen como base $  vagrant  box  add  base  http://files.vagrantup.com/lucid32.box Crear fichero de configuración inicial ( Vagrantfile ) $  vagrant  init Iniciar máquina virtual $  vagrant  up Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 18. INICIO RÁPIDO (II) Resultado de ejecución $  vagrant  box  add  base  http://files.vagrantup.com/lucid32.box [vagrant]  Downloading  with  Vagrant::Downloaders::HTTP... [vagrant]  Downloading  box:  http://files.vagrantup.com/lucid32.box [vagrant]  Extracting  box... [vagrant]  Verifying  box... [vagrant]  Cleaning  up  downloaded  box... $  vagrant  init A  `Vagrantfile`  has  been  placed  in  this  directory.  You  are  now ready  to  `vagrant  up`  your  first  virtual  environment!  Please  read the  comments  in  the  Vagrantfile  as  well  as  documentation  on `vagrantup.com`  for  more  information  on  using  Vagrant. $  vagrant  up [default]  VM  already  created.  Booting  if  it's  not  already  running... [default]  Clearing  any  previously  set  forwarded  ports... [default]  Forwarding  ports... [default]  -­‐-­‐  22  =>  2222  (adapter  1) [default]  Creating  shared  folders  metadata... [default]  Clearing  any  previously  set  network  interfaces... [default]  Booting  VM... [default]  Waiting  for  VM  to  boot.  This  can  take  a  few  minutes. [default]  VM  booted  and  ready  for  use! [default]  Mounting  shared  folders... [default]  -­‐-­‐  v-­‐root:  /vagrant Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 19. INICIO RÁPIDO (III) Accediendo por SSH $  vagrant  ssh Linux  lucid32  2.6.32-­‐38-­‐generic  #83-­‐Ubuntu  SMP  Wed  Jan  4  11:13:04  UTC   2012  i686  GNU/Linux Ubuntu  10.04.4  LTS Welcome  to  Ubuntu!  *  Documentation:    https://help.ubuntu.com/ New  release  'precise'  available. Run  'do-­‐release-­‐upgrade'  to  upgrade  to  it. Welcome  to  your  Vagrant-­‐built  virtual  machine. Last  login:  Fri  Sep  14  07:26:29  2012  from  10.0.2.2 vagrant@lucid32:~$  ifconfig  eth0|grep  inet                    inet  addr:10.0.2.15    Bcast:10.0.2.255    Mask:255.255.255.0                    inet6  addr:  fe80::a00:27ff:feb5:756c/64  Scope:Link vagrant@lucid32:~$  ping  -­‐c  1  www.google.es PING  www.google.es  (173.194.34.216)  56(84)  bytes  of  data. 64  bytes  from  mad01s08-­‐in-­‐f24.1e100.net  (173.194.34.216):  icmp_seq=1   ttl=63  time=85.0  ms -­‐-­‐-­‐  www.google.es  ping  statistics  -­‐-­‐-­‐ 1  packets  transmitted,  1  received,  0%  packet  loss,  time  0ms rtt  min/avg/max/mdev  =  85.038/85.038/85.038/0.000  ms Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 20. INICIO RÁPIDO (IV) Suspender, despertar, detener y destruir la VM $  vagrant  suspend [default]  Saving  VM  state  and  suspending  execution... $  vagrant  resume [default]  Resuming  suspended  VM... [default]  Booting  VM... [default]  Waiting  for  VM  to  boot.  This  can  take  a  few  minutes. [default]  VM  booted  and  ready  for  use! $  vagrant  halt [default]  Attempting  graceful  shutdown  of  VM... $  vagrant  destroy Are  you  sure  you  want  to  destroy  the  'default'  VM?  [Y/N]  Y [default]  Destroying  VM  and  associated  drives... Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 21. CONFIGURACIÓN Elementos importantes del fichero Vagrantfile Vagrant::Config.run  do  |config|    #  Alias  local  de  la  VM  base    config.vm.box  =  "base"    #  URL  de  dónde  descargar  la  VM  en  caso  de  no  tenerla    config.vm.box_url  =  "http://files.vagrantup.com/lucid32.box"    #  Tipo  de  arranque  (Podría  ser  :gui)    config.vm.boot_mode  =  :headless    #  Modo  de  red  (Podría  ser  :bridged)    config.vm.network  :hostonly,  "192.168.33.10"    #  Redirigir  puerto  8000  en  host  hacia  el  puerto  80  en  VM    config.vm.forward_port  80,  8000    #  Directorio  compartido    config.vm.share_folder("v-­‐root",  "/vagrant",  ".") end Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 22. AUTOMATIZACIÓN (I) Una VM vacía no nos sirve de mucho Para empezar un proyecto necesitamos ciertas herramientas A mitad del proyecto es muy probable que necesitemos más Es necesario automatizar la instalación y configuración de software Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 23. AUTOMATIZACIÓN (I) Una VM vacía no nos sirve de mucho Para empezar un proyecto necesitamos ciertas herramientas A mitad del proyecto es muy probable que necesitemos más Es necesario automatizar la instalación y configuración de software Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 24. AUTOMATIZACIÓN (II) Declarativo Imperativo (ruby) Clases y módulos Recetas Maduro (2005) Más reciente (2009) Extendido Menos extendido Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 25. EJEMPLO CON PUPPET (I) Vagrant::Config.run  do  |config|    #  Alias  local  de  la  VM  base    config.vm.box  =  "base"    #  URL  de  dónde  descargar  la  VM  en  caso  de  no  tenerla    config.vm.box_url  =  "http://files.vagrantup.com/lucid32.box"    #  Modo  de  red  (Podría  ser  :bridged)    config.vm.network  :hostonly,  "192.168.33.10"    #  Directorio  compartido    config.vm.share_folder("v-­‐root",  "/vagrant",  ".")        #  Usar  puppet/ejemplo.pp  como  fichero  de  manifiesto  puppet    config.vm.provision  :puppet  do  |puppet|        puppet.manifests_path  =  "puppet"        puppet.manifest_file  =  "ejemplo.pp"    end end Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 26. EJEMPLO CON PUPPET (II) Contenido de puppet/ejemplo.pp exec  {"apt-­‐get-­‐update":"apt-­‐get-­‐update":        creates  =>  "/tmp/apt-­‐get-­‐updated",        command  =>  "/usr/bin/apt-­‐get  update  &&  /usr/bin/touch  /tmp/apt-­‐ get-­‐updated" } package  {"apache2":        ensure  =>  present,        require  =>  Exec["apt-­‐get-­‐update"], } $php  =  ["php5-­‐cli",  "php5-­‐mysql",  "libapache2-­‐mod-­‐php5"] package  {  $php:        ensure  =>  present,        notify  =>  Service["apache2"],        require  =>  Exec["apt-­‐get-­‐update"] } Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 27. EJEMPLO CON PUPPET (III) Agregando soporte a MySQL $mysql  =  ["mysql-­‐server",  "mysql-­‐client"] package  {  $mysql:        ensure  =>  present,        require  =>  Exec["apt-­‐get-­‐update"] } file  {"/etc/mysql/my.cnf":   ensure   =>  file,   owner  =>  "root",   group  =>  "root",   mode   =>  644,   source   =>  "/vagrant/puppet/files/mysql/my.cnf",   require   =>  Package[$mysql],   notify   =>  Service["mysql"], } service  {"mysql":   enable   =>  true,   ensure   =>  running,   require   =>  Package[$mysql], } Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 28. RESUMEN Vagrant es una herramienta muy potente Réplica en desarrollo del entorno de producción Si aún no la usas estás perdiendo tiempo y dinero... Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 29. RESUMEN Vagrant es una herramienta muy potente Réplica en desarrollo del entorno de producción Si aún no la usas estás perdiendo tiempo y dinero... Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras