SlideShare una empresa de Scribd logo
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 ?




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



          « ¡¡ 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)

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 (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

Más contenido relacionado

La actualidad más candente

Introduccion A Docker
Introduccion A DockerIntroduccion A Docker
Introduccion A Docker
Adrian Garcia Casas
 
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
Sergio Zambrano Delfa
 
Vagrant
VagrantVagrant
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
 
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
Marcelo Ochoa
 
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
Christian Rodriguez
 
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
 
Una introducción a vagrant
Una introducción a vagrantUna introducción a vagrant
Una introducción a vagrant
Laura Gimenoide
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
Open Canarias
 
Gestionando servidores con Puppet
Gestionando servidores con PuppetGestionando servidores con Puppet
Gestionando servidores con Puppet
Javier Turégano Molina
 
Presentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarmPresentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarm
Alejandro Escanero Blanco
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
quaip
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
Irene Alonso Candelario
 
Virtualenv y buildout
Virtualenv y buildoutVirtualenv y buildout
Virtualenv y buildout
Alvaro Hernández
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
Jorge Moratilla Porras
 
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
scrumecuador
 
Sandbox para ejercicios de programación
Sandbox para ejercicios de programaciónSandbox para ejercicios de programación
Sandbox para ejercicios de programación
Mario Garcia-Valdez
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con Docker
Ernesto Crespo
 
Java y sus caracteristicas
Java y sus caracteristicasJava y sus caracteristicas
Java y sus caracteristicas
Any Saula
 
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
Luis Enrique Tejeda Rodriguez
 

La actualidad más candente (20)

Introduccion A Docker
Introduccion A DockerIntroduccion A Docker
Introduccion A Docker
 
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
 
Vagrant
VagrantVagrant
Vagrant
 
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)
 
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
 
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
 
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 ...
 
Una introducción a vagrant
Una introducción a vagrantUna introducción a vagrant
Una introducción a vagrant
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Gestionando servidores con Puppet
Gestionando servidores con PuppetGestionando servidores con Puppet
Gestionando servidores con Puppet
 
Presentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarmPresentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarm
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Virtualenv y buildout
Virtualenv y buildoutVirtualenv y buildout
Virtualenv y buildout
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
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
 
Sandbox para ejercicios de programación
Sandbox para ejercicios de programaciónSandbox para ejercicios de programación
Sandbox para ejercicios de programación
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con Docker
 
Java y sus caracteristicas
Java y sus caracteristicasJava y sus caracteristicas
Java y sus caracteristicas
 
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
 

Similar a Vagrant: virtualizando entornos de 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 CodeURJC
Micael Gallego
 
Oracle VM VirtualBox Hacked
Oracle VM VirtualBox HackedOracle VM VirtualBox Hacked
Oracle VM VirtualBox Hacked
V. Javierf Fdez
 
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 ...
Centro de Desarrollo de Competencias Digitales de Castilla-La Mancha
 
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
betabeers
 
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
Julio Palma Vázquez
 
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
wpargentina
 
Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2
José Vázquez
 
Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2
José Vázquez
 
Docker
DockerDocker
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
Tensor
 
Drupal 8, de cero a producción en minutos.
Drupal 8, de cero a producción en minutos.Drupal 8, de cero a producción en minutos.
Drupal 8, de cero a producción en minutos.
Miguel Ángel Caro García
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
Cuckoosandbox
Tensor
 
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
Pablo Godel
 
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
quaip
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
Tensor
 
Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
Mariano German Egui
 
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
Manuel Juan Fosela Aguila
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Micael Gallego
 

Similar a Vagrant: virtualizando entornos de 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
 
Oracle VM VirtualBox Hacked
Oracle VM VirtualBox HackedOracle VM VirtualBox Hacked
Oracle VM VirtualBox Hacked
 
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 ...
 
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
 
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
 
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
 
Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2
 
Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2Ponencia virtualización sl alejandro vázquez 2
Ponencia virtualización sl alejandro vázquez 2
 
Docker
DockerDocker
Docker
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Drupal 8, de cero a producción en minutos.
Drupal 8, de cero a producción en minutos.Drupal 8, de cero a producción en minutos.
Drupal 8, de cero a producción en minutos.
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
Cuckoosandbox
 
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
 
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
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
 
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
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 

Último

DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
Miguel Rebollo
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
AMADO SALVADOR
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
bendezuperezjimena
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
LilibethEstupian
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
JimmyTejadaSalizar
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
Festibity
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
IsabelQuintero36
 
algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1
yuki22434
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
tamarita881
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
SERVANDOBADILLOPOLEN
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Festibity
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 

Último (20)

DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
 
algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 

Vagrant: virtualizando entornos de 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 ? Usar herramienta independiente del entorno de virtualización que nos oculte los detalles Vagrant: virtualizando entornos de desarrollo / Daniel Vigueras / @danielvigueras
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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