Ambientes de Desenvolvimento Portáteis com o Vagrant

Ambientes de Desenvolvimento Portáteis com o Vagrant

Introdução ao Vagrant apresentada no 5o encontro PHP-PB, 28/06/2014

719435d98d452de7ac367c828266cf01?s=128

Erika Heidi

June 28, 2014
Tweet

Transcript

  1. None
  2. whoami • Brasileira, morando em Amsterdam desde 2012 • Desenvolvedora

    Web/PHP independente • Autora do livro Vagrant Cookbook
  3. O que esperar desta palestra • Introdução ao Vagrant –

    Terminologia, utilização básica • Provisionamento – Escolhendo um provisionador – Exemplo prático com Ansible • ProTips • Recursos úteis
  4. None
  5. Por que usar Vagrant?

  6. “Funciona na minha máquina”

  7. 1.1 Por que usar Vagrant • Ambiente de desenvolvimento reproduzível

    e portátil • Torna mais fácil contribuições em um projeto • Testar diferentes configurações de backend • Aprender e testar ferramentas de automação
  8. None
  9. 1.2 Terminologia • Boxes • Máquinas Host e Guest •

    Provedor (Provider) • Provisionador (Provisioner) • Diretórios Sincronizados • Vagrantfile
  10. 1.3 Primeiros Passos Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" config.vm.provision

    "shell", inline: "echo Hello PHPPB!" end
  11. Output

  12. 1.4 Comandos • up • reload • provision • suspend

    • resume • destroy [ --provision ] [ --provision ]
  13. 1.5 Um exemplo mais completo Vagrant.configure("2") do |config| config.vm.box =

    "hashicorp/precise64" config.vm.network :private_network, ip: "192.168.33.101" config.vm.provision "ansible" do |ansible| ansible.playbook = "playbook.yml" end config.vm.synced_folder "./", "/vagrant", :nfs => true end
  14. O que há de novo

  15. 1.6 Novas Funcionalidades Vagrant 1.5 • Vagrant Cloud / boxes

    2.0 • Vagrant Share • Rsync • SMB Vagrant 1.6 • Status e Controle Global • Windows como Guest • Provedor Docker • Mensagem Pós-up
  16. Vagrant Cloud (1.5)

  17. Vagrant Share (1.5)

  18. Post-up message (1.6)

  19. Global status and control (1.6)

  20. None
  21. 2.1 Ferramentas de Automação • Funcionalidades nativas em ferramentas de

    automação: – Linguagem clara – Gerência de estado idempotente – Sistema de Templates – Modularização
  22. 2.1 Ferramentas de Automação PUPPET CHEF ANSIBLE Sintaxe Custom baseada

    em Ruby Ruby YAML Terminologia Manifests / Modules Recipes / CookBooks Playbooks / Roles Ordem de Exec. Não sequencial Sequencial Sequencial Documentação Confusa Caótica Clara e Objetiva Popularidade Primeiro Segundo Terceiro Dependências - - ansible Curva de Aprendizado Geral Moderada Alta Baixa
  23. Exemplo Prático Nginx + PHP5: Ansible

  24. Vagrantfile Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" config.vm.provision "ansible" do

    |ansible| ansible.playbook = "playbook.yml" end end
  25. Playbook # playbook.yml --- - hosts: all sudo: true tasks:

    - name: Update apt-cache apt: update_cache=yes - name: Install Nginx and php5-fpm apt: pkg={{ item }} state=latest with_items: - nginx - php5-fpm
  26. Output

  27. None
  28. 3.1 Debugging • Erro desconhecido no Vagrant – Use a

    GUI do VirtualBox / Vmware • Erro desconhecido do provisionador – Aumentar verbosidade no Vagrantfile • Não funciona como esperado – Faça login, resolva, automatize
  29. 3.2 Performance • Diretórios sincronizados podem se tornar um gargalo

    • Diretórios de cache/logs – Muitas operações de escrita no disco – Não precisam estar sincronizados
  30. None
  31. None
  32. None
  33. None
  34. Comparando Provisionadores • Nginx + PhP5-FPM com Ansible, Puppet e

    Chef – https://github.com/erikaheidi/nomad-vagrant
  35. puphpet.com

  36. phansible.com

  37. Vagrant Cookbook (PT-BR) Preço especial de lançamento! https://leanpub.com/vagrantcookbook-ptbr

  38. Perguntas?

  39. erikaheidi.com/vagrant https://joind.in/11410 Mais conteúdo sobre Vagrant: