7. Discourse
‣ Una nueva plataforma de discución
‣ Gratis, Libre y Simple
‣ Creado por Jeff Atwood (@codinghorror)
8. Discourse
‣ Una nueva plataforma de discución
‣ Gratis, Libre y Simple
‣ Creado por Jeff Atwood (@codinghorror)
‣ Creador de StackOverflow
9. Discourse
‣ Una nueva plataforma de discución
‣ Gratis, Libre y Simple
‣ Creado por Jeff Atwood (@codinghorror)
‣ Creador de StackOverflow
‣ Blog http://www.codinghorror.com/blog/
19. ‣ Es una forma de administrar Máquinas Virtules (MV)
Que es Vagrant?
20. ‣ Es una forma de administrar Máquinas Virtules (MV)
‣ Puede correr diferentes Sistemas Operativos
Que es Vagrant?
21. ‣ Es una forma de administrar Máquinas Virtules (MV)
‣ Puede correr diferentes Sistemas Operativos
‣ Las MV se pueden definir en código
Que es Vagrant?
22. ‣ Es una forma de administrar Máquinas Virtules (MV)
‣ Puede correr diferentes Sistemas Operativos
‣ Las MV se pueden definir en código
‣ Vagrant utiliza VirtualBox para construir MV que son
configurables, ligereas y portables.
Que es Vagrant?
25. Por que Vagrant?
‣ Problemas al crear un ambiente de desarollo
‣ Toma mucho tiempo y por lo general necesitas
soporte.
26. Por que Vagrant?
‣ Problemas al crear un ambiente de desarollo
‣ Toma mucho tiempo y por lo general necesitas
soporte.
‣ Requieres de documentación que la mayoría de las
veces esta desactualizada.
27. Por que Vagrant?
‣ Problemas al crear un ambiente de desarollo
‣ Toma mucho tiempo y por lo general necesitas
soporte.
‣ Requieres de documentación que la mayoría de las
veces esta desactualizada.
‣ Si cometes un error en tú ambiente, te puede tomar
días repararlo.
28. Por que Vagrant?
‣ Problemas al crear un ambiente de desarollo
‣ Toma mucho tiempo y por lo general necesitas
soporte.
‣ Requieres de documentación que la mayoría de las
veces esta desactualizada.
‣ Si cometes un error en tú ambiente, te puede tomar
días repararlo.
‣ Puede producir resultados inesperados.
30. ‣ Tu entorno de desarollo y producción no son los
mismos!
Por que Vagrant?
31. ‣ Tu entorno de desarollo y producción no son los
mismos!
‣ Diferentes Sistemas Operativos.
Por que Vagrant?
32. ‣ Tu entorno de desarollo y producción no son los
mismos!
‣ Diferentes Sistemas Operativos.
‣ Direrentes versiones de PHP/Phyton/Ruby.
Por que Vagrant?
33. ‣ Tu entorno de desarollo y producción no son los
mismos!
‣ Diferentes Sistemas Operativos.
‣ Direrentes versiones de PHP/Phyton/Ruby.
‣ No coincíden las versiones de las librerías.
Por que Vagrant?
34. ‣ Tu entorno de desarollo y producción no son los
mismos!
‣ Diferentes Sistemas Operativos.
‣ Direrentes versiones de PHP/Phyton/Ruby.
‣ No coincíden las versiones de las librerías.
‣ Diferentes archivos de configuración.
Por que Vagrant?
41. ‣ Con Vagrant puedes hacer el setup de tú ambiente
mucho mas rápido.
Por que Vagrant?
42. ‣ Con Vagrant puedes hacer el setup de tú ambiente
mucho mas rápido.
‣ Maximiza la compatibilidad entre el ambiente de
producción y desarrollo.
Por que Vagrant?
43. ‣ Con Vagrant puedes hacer el setup de tú ambiente
mucho mas rápido.
‣ Maximiza la compatibilidad entre el ambiente de
producción y desarrollo.
‣ No mas “En mi maquina si funciona!”.
Por que Vagrant?
54. Vagrantfile
A Ruby DLS (Domiain Specific Language)
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "precise32"
end
58. $ vagrant up
Run Baby Run!!
Para levantar nuestra MV
Para entrar a la MV
59. $ vagrant up
Run Baby Run!!
Para levantar nuestra MV
$ vagrant shh
Para entrar a la MV
60. $ vagrant up
Run Baby Run!!
Para levantar nuestra MV
$ vagrant shh
Para entrar a la MV
Para cerrar la MV
61. $ vagrant up
Run Baby Run!!
Para levantar nuestra MV
$ vagrant shh
Para entrar a la MV
$ vagrant halt
Para cerrar la MV
62. $ vagrant up
Run Baby Run!!
Para levantar nuestra MV
$ vagrant shh
Para entrar a la MV
$ vagrant halt
Para cerrar la MV
Para eliminar la MV
63. $ vagrant up
Run Baby Run!!
Para levantar nuestra MV
$ vagrant shh
Para entrar a la MV
$ vagrant halt
Para cerrar la MV
$ vagrant destroy
Para eliminar la MV
70. Que mas?
‣ Podemos instalar todas nuestras depencias una
sola vez.
‣ Podemos hacer nuestra MV igual a nuestro
ambiente de producción.
71. Que mas?
‣ Podemos instalar todas nuestras depencias una
sola vez.
‣ Podemos hacer nuestra MV igual a nuestro
ambiente de producción.
‣ Podemos hacer un “Base Box” y compartirla entre
nosotros.
72. Que mas?
‣ Podemos instalar todas nuestras depencias una
sola vez.
‣ Podemos hacer nuestra MV igual a nuestro
ambiente de producción.
‣ Podemos hacer un “Base Box” y compartirla entre
nosotros.
‣ Cuanto tiempo nos podemos ahorrar??
80. $ vagrant package
Package
Creamos nuestro box
$ vagrant box add base package.box
Esto genera un package.box que podemos usar de la
siguiente manera:
93. Provisioners
‣ Lanzar una MV en blanco no es muy útil
‣ Permiten hacer el setup de nuesta MV mucho mas
fácil
94. Provisioners
‣ Lanzar una MV en blanco no es muy útil
‣ Permiten hacer el setup de nuesta MV mucho mas
fácil
‣ Opcionales, si quieres instalar el software a
manualmente es desición propia.
95. Provisioners
‣ Lanzar una MV en blanco no es muy útil
‣ Permiten hacer el setup de nuesta MV mucho mas
fácil
‣ Opcionales, si quieres instalar el software a
manualmente es desición propia.
‣ Puedes crear tú propio provisioner
96. Provisioners
‣ Lanzar una MV en blanco no es muy útil
‣ Permiten hacer el setup de nuesta MV mucho mas
fácil
‣ Opcionales, si quieres instalar el software a
manualmente es desición propia.
‣ Puedes crear tú propio provisioner
‣ solo si le sabes al ruby XD
97.
98. # -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "precise32"
# Bootstrap vm from external shell script
config.vm.provision :shell, :path => "bootstrap.sh"
end
http://docs.vagrantup.com/v2/provisioning/shell.html
Shell
#!/bin/bash
echo I am provisioning...
date > /etc/vagrant_provisioned_at
bootstrap.sh
107. Masterless
‣ Instalamos Vagrant
‣ Instalamos Salty Vagrant (vagrant plugin install vagrant-salt)
‣ Agregamos el box Ubuntu 12.04: vagrant box add precise64
http://files.vagrantup.com/precise64.box
‣ Actualizamos nuestro Vagrantfile [2]
‣ Colocamos nuestro minion config dentro de salt/minion [1]
‣ Hacemos un vagrant up.
‣ [1] Asegúrate de que el minion config establezca la propiedad
file_client: local para la configuración masterless
108. Masterless
‣ Instalamos Vagrant
‣ Instalamos Salty Vagrant (vagrant plugin install vagrant-salt)
‣ Agregamos el box Ubuntu 12.04: vagrant box add precise64
http://files.vagrantup.com/precise64.box
‣ Actualizamos nuestro Vagrantfile [2]
‣ Colocamos nuestro minion config dentro de salt/minion [1]
‣ Hacemos un vagrant up.
‣ [1] Asegúrate de que el minion config establezca la propiedad
file_client: local para la configuración masterless
‣ [2] No olvides crear un ”shared folder” para la configuración de salt
109. # -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "precise32"
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine.
config.vm.network :forwarded_port, guest: 3200, host: 3200
config.vm.synced_folder "srv/", "/srv/"
config.vm.provision :salt do |salt|
## Minion config is set to ``file_client: local`` for masterless
salt.minion_config = "srv/minion"
salt.run_highstate = true
end
end
Configuración