Save 37% off PRO during our Black Friday Sale! »

Usando Vagrant como ambiente de desenvolvimento Ruby

Usando Vagrant como ambiente de desenvolvimento Ruby

Uma das grandes dificuldades em qualquer plataforma de desenvolvimento é manter um ambiente conciso, principalmente quando o seu time possui muitos desenvolvedores. Junte isso à diferença entre o sistema operacional do desenvolvedor com arquiteturas diferentes, bibliotecas utilizadas com extensões nativas e a probabilidade de dar algo errado em produção aumenta muito! Veja como o Vagrant pode resolver todos esses problemas e ainda servir como uma plataforma de testes para scripts de configuração de servidores usando máquinas virtuais.

Palestra apresentada na RubyConf 2013

Cb5d9e9095cd41b636764a85e57ade4b?s=128

Nando Vieira

August 31, 2013
Tweet

Transcript

  1. Usando Va rant como ambiente de desenvolvimento Ruby

  2. Usando Va rant como ambiente de desenvolvimento Ruby

  3. Nando Vieira http://simplesideias.com.br @fnando

  4. None
  5. None
  6. None
  7. ✱ ✱ ✱

  8. O que você faz quando começa a trabalhar em um

    novo projeto?
  9. O que você faz quando começa a trabalhar em projetos

    esporádicos?
  10. O que você faz quando está em uma plataforma Windows

    e precisa usar ferramentas que só funcionam em ambientes *nix?
  11. O que você faz quando dá cursos de desenvolvimento web?

  12. Todos esses cenários possuem uma coisa em comum.

  13. Confi uração de ambiente.

  14. Em um mundo perfeito, você poderia apenas pe ar uma

    cópia do seu projeto e executá-la.
  15. No mundo real, a história é muito diferente.

  16. A verdade é que temos muitos problemas recorrentes.

  17. Novos funcionários demoram para confi urar suas máquinas.

  18. A diferença entre os ambientes de desenvolvimento e produção trazem

    problemas inesperados.
  19. It works for me™

  20. Testar ferramentas podem destruir a sua máquina de desenvolvimento.

  21. Replicação de ambientes que simulam produção é complicado.

  22. Grande parte desses problemas pode ser resolvida com virtualização e

    containers.
  23. http://virtualbox.or

  24. http://vmware.com

  25. http://parallels.com

  26. http://lxc.sourcefor e.net

  27. http://docker.io

  28. Nós temos muitas alternativas de virtualização e containers.

  29. Mas como usar o seu poder no ambiente de desenvolvimento,

    de uma maneira simples?
  30. None
  31. Mitchell Hashimoto

  32. O Va rant é uma ferramenta command-line que abstrai diversas

    ambientes de virtualização.
  33. VirtualBox DigitalOcean

  34. O Va rant é uma ferramenta multi-plataforma.

  35. Windows Linux Mac

  36. É usado por empresas do mundo todo.

  37. None
  38. Possui provisionamento automatizado.

  39. None
  40. Confi urar o Va rant é muito simples.

  41. Instale o VirtualBox (ou VMware, se você tiver a licença).

    http://virtualbox.or
  42. Instale o Va rant. http://va rantup.com

  43. Instale o plu in va rant-vb uest.

  44. $ vagrant plugin install vagrant-vbguest

  45. Adicione um box Va rant.

  46. Oficiais http://files.vagrantup.com/lucid32.box http://files.vagrantup.com/lucid64.box http://files.vagrantup.com/precise32.box http://files.vagrantup.com/precise64.box Comunidade http://vagrantbox.es/ http://hellobits.com/vagrant/hellobits.box Exporte seu

    próprio box $ vagrant package --output your.box
  47. $ vagrant box add precise64 \ http://files.vagrantup.com/precise64.box

  48. Inicie um workspace.

  49. $ vagrant init precise64

  50. Inicie as máquinas virtuais.

  51. $ vagrant up

  52. Conecte através de SSH.

  53. $ vagrant ssh

  54. Pronto!

  55. Mas como isso afeta o seu trabalho?

  56. Projetos se tornam complexos com o tempo.

  57. Application Server, Back round Job, Web Server, Proxy, Memcached, Redis,

    Mon odb, Post resql, MySql…
  58. Ambientes podem ser complexos, mas não devem ser desordenados.

  59. Com Va rant você pode testar as confi urações e

    provisionamento.
  60. Vagrant.configure("2") do |config| config.vm.box = "precise64" config.vm.provision :puppet do |puppet|

    puppet.manifests_path = "manifests" puppet.manifest_file = "init.pp" end end
  61. Você pode simular ambientes complexos com múltiplos servidores.

  62. small.io HTTP Database Assets Workers

  63. bi .io HTTP Database Node.js Downloads Assets

  64. Com Va rant você pode levantar multi-vms em uma mesma

    rede.
  65. Vagrant.configure("2") do |config| config.vm.define :filesystem do |fs| fs.vm.box = "precise64"

    fs.vm.network :hostonly, "192.168.2.100" end config.vm.define :gitserver do |git| git.vm.box = "precise64" git.vm.network :hostonly, "192.168.2.101" end end
  66. Em modo de desenvolvimento, seus arquivos são compartilhados.

  67. Você usa seu editor preferido, e todas as modificações são

    automaticamente refletidas.
  68. Vagrant.configure("2") do |config| config.vm.synced_folder ".", "/Projects", id: "vagrant-root" end

  69. Acesse todos os serviços como você faria normalmente.

  70. Com Va rant você pode redirecionar portas do host para

    o uest.
  71. Vagrant.configure("2") do |config| config.vm.box = "precise64" forward_port = -> guest_port,

    host_port = guest_port { config.vm.network :forwarded_port, guest: guest_port, host: host_port } forward_port[3000] # rails forward_port[9292] # rack forward_port[4567] # sinatra forward_port[3306] # mysql forward_port[5432] # postgresql forward_port[6379] # redis forward_port[80, 8080] # nginx/apache end
  72. Com o Va rant, cada projeto possui confi urações e

    dependências específicas, totalmente isoladas.
  73. Terminal, Editor e Nave ador Projeto 1 Projeto 2 Projeto

    3 Projeto 4 + +
  74. Seu ambiente de desenvolvimento é mais parecido com o ambiente

    de produção.
  75. Mac OS X *NIX Windows Desenvolvimento Produção Estatísticas Ambiente de

    desenvolvimento versus ambiente de produção* *Estatísticas inventadas, mas com um fundo de verdade. Mac OS X *NIX Windows
  76. http://12factor.net

  77. Ambientes semelhantes tem menos probabilidade de terem falhas.

  78. ✱ ✱ ✱

  79. Cada projeto tem suas dependências isoladas.

  80. Os devs compartilham o mesmo ambiente de desenvolvimento.

  81. Ambientes de desenvolvimento e produção confi urados do mesmo jeito.

  82. Início imediato de novos funcionários.

  83. ✱ ✱ ✱

  84. Obri ado!