Minicurso de Vagrant

683 visualizações

Publicada em

Minicurso de Vagrant ministrado na 4ª Semana de Ciência da Computação e Tecnologia da Informação (SCTI 2014) - Campos - RJ - Link dos arquivos: https://github.com/LeandroSNunes/mini-curso-vagrant

0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
683
No SlideShare
0
A partir de incorporações
0
Número de incorporações
49
Ações
Compartilhamentos
0
Downloads
25
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Minicurso de Vagrant

  1. 1. VAGRANT Agilizando seu ambiente de desenvolvimento Minicurso
  2. 2. Leandro Nunes http://leandronunes.com @leandrosnunes
  3. 3. Pré-requisito $ for name in {vagrant,git,vim,vboxmanage} ; do which $name ; done
  4. 4. O QUE É NECESSÁRIO PARA INICIAR UM PROJETO?
  5. 5. TODOS FAZEM INSTALAÇÕES LOCAIS
  6. 6. VAGRANT FERRAMENTA PARA CONSTRUIR E DISTRIBUIR AMBIENTES DE FORMA SIMPLES
  7. 7. Mitchell Hashimoto @mitchellh • Inicio em 2010 • Desenvolvido em Ruby • Release 1.6.5 • HashiCorp 2012
  8. 8. O QUE É PRECISO PARA UTILIZAR O VAGRANT?
  9. 9. UMA MÁQUINA HOST Maquina para instalar o vagrant – Máquina de Desenvolvimento VAGRANT www.vagrantup.com PROVIDER Gerenciador de Máquinas Virtuais
  10. 10. PROVIDER OU OU DEFAULT OU OU
  11. 11. Download em: www.vagrantup.com www.virtualbox.org
  12. 12. GUEST Fonte: http://www.vcritical.com/ HOST
  13. 13. $ vBoxManage
  14. 14. $ mkdir mini-curso-vagrant $ cd mini-curso-vagrant
  15. 15. $ vagrant init vagrant init [box-name] [box-url]
  16. 16. VagrantFile VAGRANTFILE_API_VERSION = "2” Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "base” end
  17. 17. BOX REPRESENTA UM SISTEMA OPERACIONAL INSTALADO PARA UM PROVIDER ESPECÍFICO.
  18. 18. BOX BASE vagrantbox.es vagrantcloud.com
  19. 19. $ vagrant init leandrosnunes/precise64
  20. 20. VagrantFile VAGRANTFILE_API_VERSION = "2” Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = ”leandrosnunes/precise64” end
  21. 21. $ vagrant box add ADDRESS $ vagrant box list
  22. 22. $ vagrant up
  23. 23. VM RODANDO NO VIRTUALBOX
  24. 24. $ vagrant ssh
  25. 25. $ vagrant halt
  26. 26. $ vagrant init $ vagrant box $ vagrant up $ vagrant ssh $ vagrant halt
  27. 27. EFETUAR TESTES DE NOVAS FERRAMENTAS
  28. 28. $ vagrant up $ vagrant ssh $ sudo apt-get update $ sudo apt-get –y install postgresql $ sudo apt-get –y install nginx $ sudo apt-get –y install php $ sudo apt-get –y uninstall php $ sudo apt-get –y install ruby
  29. 29. $ vagrant up $ vagrant ssh $ sudo apt-get update $ which nginx $ sudo apt-get –y install nginx $ which nginx
  30. 30. $ vagrant status
  31. 31. $ vagrant destroy
  32. 32. $ vagrant up
  33. 33. MEU IDE PREFERIDO SÓ FUNCIONA NO WINDOWS!
  34. 34. SYNCED FOLDERS AS MODIFICAÇÕES SÃO REFLETIDAS EM TEMPO REAL ENTRE AS MAQUINAS HOST E GUEST
  35. 35. $ echo "Mini Curso de Vagrant" > hello_world.txt $ cat hello_world.txt $ vagrant ssh $ cd /vagrant $ ls $ cat hello_world.txt
  36. 36. COMO ACESSAR A APLICAÇÃO?
  37. 37. NETWORK UMA REDE NAT É CRIADA POR DEFAULT. A REDE PRIVADA PERMITE ACESSO DE OUTROS DISPOSITIVOS NA MESMA REDE.
  38. 38. $ vagrant destroy $ cd ../ $ rm –r mini-curso-vagrant $ git clone git@github.com:LeandroSNunes/mini-curso- vagrant.git $ cd mini-curso-vagrant $ git fetch origin step1 $ git checkout step1 $ git commit –am “update”
  39. 39. VagrantFile config.vm.network :private_network, ip: "192.168.33.30” config.vm.network :forwarded_port, guest: 3000, host: 3000 config.vm.network :forwarded_port, guest: 3306, host: 3306 config.vm.post_up_message = ”Mini curso de vagrantn IP: 192.168.33.30"
  40. 40. $ vagrant up $ vagrant ssh $ sudo apt-get update $ sudo apt-get –y install nginx $ sudo service nginx start
  41. 41. Acessando o nginx
  42. 42. $ vagrant package
  43. 43. AMBIENTE DE DESENVOLVIMENTO IGUAL PARA TODO TIME
  44. 44. Postgresql Nginx Puma Assets
  45. 45. Nginx Postgresql Puma Assets
  46. 46. 1 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 2 config.vm.box = "leandrosnunes/precise64" 3 4 config.vm.define :development do |dev| 5 dev.vm.network "private_network", ip: "192.168.33.30" 6 dev.vm.network :forwarded_port, guest: 3306, host: 3306 # mysql 7 8 dev.vm.post_up_message = "Dev mini curso de vagrantn IP: 192.168.33.30" 9 end 10 11 config.vm.define :production do |pro| 12 pro.vm.network "private_network", ip: "192.168.33.31" 13 14 pro.vm.post_up_message = "Prod mini curso de vagrantn IP: 192.168.33.31" 15 end 16 end
  47. 47. $ vagrant up $ vagrant up development $ vagrant up production $ vagrant ssh $ vagrant ssh development $ vagrant ssh production
  48. 48. $ vagrant destroy $ vagrant destroy development $ vagrant destroy production $ vagrant halt $ vagrant halt development $ vagrant halt production
  49. 49. A APLICAÇÃO PODE RODAR EM AMBIENTE SIMILAR AO DE PRODUÇÃO
  50. 50. ACABA COM A FRASE “FUNCIONA NA MINHA MÁQUINA”
  51. 51. 1 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 2 config.vm.box = "leandrosnunes/precise64" 3 4 config.vm.define :development do |dev| 5 dev.vm.network "private_network", ip: "192.168.33.30" 6 dev.vm.network :forwarded_port, guest: 3306, host: 3306 # mysql 7 8 dev.vm.provider "virtualbox" do |vb| 9 vb.customize ["modifyvm", :id, "--memory", "1024"] 10 vb.customize ["modifyvm", :id, "--cpus", "1"] 11 end 12 13 dev.vm.post_up_message = "Dev mini curso de vagrantn IP: 192.168.33.30" 14 end 15 16 config.vm.define :production do |pro| 17 pro.vm.network "private_network", ip: "192.168.33.31" 18 19 pro.vm.provider "virtualbox" do |vb| 20 vb.customize ["modifyvm", :id, "--memory", "1024"] 21 vb.customize ["modifyvm", :id, "--cpus", "2"] 22 end 23 24 pro.vm.post_up_message = "Prod mini curso de vagrantn IP: 192.168.33.31" 25 end 26 end
  52. 52. TAREFAS MANUAIS NÃO PERMITEM QUALIDADE
  53. 53. PROVISIONER ANSIBLE CHEF PUPPET SHELL
  54. 54. development 1 dev.vm.provision :puppet do |puppet| 2 puppet.module_path = "modules" 3 puppet.manifest_file = "development.pp" 4 puppet.options = "--verbose --debug" 5 end production 1 pro.vm.provision :puppet do |puppet| 2 puppet.module_path = "modules" 3 puppet.manifest_file = "production.pp" 4 end
  55. 55. $ vagrant up development $ vagrant up production
  56. 56. $ vagrant provision
  57. 57. $ vagrant reload --provision
  58. 58. GERÊNCIA DE CONFIGURAÇÃO
  59. 59. INCENTIVO PARA PRÁTICAS DO MOVIMENTO DEVOPS
  60. 60. PARTICIPAR DE PROJETOS COM PECULIARIDADES DIFERENTES
  61. 61. SIMPLICIDADE PARA CONTRIBUIR PARA PROJETOS OPEN SOURCE
  62. 62. PLUGIN FUNCIONALIDADES EXTRAS, COMO SUPORTE A OUTROS PROVIDERS
  63. 63. $ vagrant install plugin vagrant-vbguest $ vagrant install vagrant-librarian-puppet
  64. 64. VagrantFile config.vm.synced_folder ".", "/vagrant", type: "nfs"
  65. 65. VAGRANT OPEN SOURCE Github: https://github.com/mitchellh/vagrant IRC: #vagrant Google Groups: vagrant-up
  66. 66. VAGRANT DOCS http://docs.vagrantup.com/v2/
  67. 67. ?

×