Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Erika Heidi

June 28, 2014
Tweet

More Decks by Erika Heidi

Other Decks in Programming

Transcript

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

    Web/PHP independente • Autora do livro Vagrant Cookbook
  2. 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
  3. 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
  4. 1.2 Terminologia • Boxes • Máquinas Host e Guest •

    Provedor (Provider) • Provisionador (Provisioner) • Diretórios Sincronizados • Vagrantfile
  5. 1.4 Comandos • up • reload • provision • suspend

    • resume • destroy [ --provision ] [ --provision ]
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. Comparando Provisionadores • Nginx + PhP5-FPM com Ansible, Puppet e

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