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

Speeding up your development team with vagrant

Robin Müller
November 07, 2013

Speeding up your development team with vagrant

Mein Talk zu Vagrant auf der Developer Conference 2013 in Hamburg.

Robin Müller

November 07, 2013
Tweet

More Decks by Robin Müller

Other Decks in Technology

Transcript

  1. 2

  2. 3

  3. 5 Entwickler Versch. Testumgebungen Alte Versionen Versch. Projekte Manuelle Verwaltung

    Arbeitgeber Versch. Projekte Alte Projekte Neue Entwickler im Team
  4. Entwickler Versch. Testumgebungen Alte Versionen Versch. Projekte Manuelle Verwaltung Arbeitgeber

    Versch. Projekte Alte Projekte Neue Entwickler im Team 7 ✔ ✔ ✔ ✔ ✔
  5. 8

  6. •  2010 gestartet •  Tool um komplette Entwicklungs-/Testumgebungen zu erstellen

    •  Einfacher Workflow •  Fokus auf Automatisierung •  Wichtige Begriffe: •  Base box •  Provider •  Provisioner •  Synced folder 9
  7. Erste Schritte 11 •  VirtualBox auf Host installieren => virtualbox.org

    •  Vagrant auf Host installieren => vagrantup.com $ vagrant box add precise64 http:// files.vagrantup.com/precise64.box $ vagrant init precise64 $ vagrant up
  8. Befehle 12 •  vagrant init •  Erstellt ein Vagrantfile im

    aktuellen Verzeichnis •  vagrant up •  Erstellt und startet die Guests wie im Vagrantfile definiert •  vagrant halt •  Herunterfahren des Guest •  vagrant destroy •  Herunterfahren und löschen des Guest •  vagrant ssh •  Per SSH mit Guest verbinden
  9. Lifecycle 13 Base boxes Working box add init precise64 Vagrantfile

    up Defined box destroy halt Defined box up Defined box
  10. Vagrantfile 14 Vagrant.configure("2") do |config| config.vm.box = "precise64" config.vm.box_url =

    "http://files.vagrantup.com/precise64.box" config.vm.network :forwarded_port, guest: 80, host: 8080 config.vm.synced_folder "./data", "/vagrant_data” config.vm.provider :virtualbox do |vb| vb.gui = false vb.customize [ "modifyvm", :id, "--memory", "3072", "--cpus", "3" ] end end
  11. Synced folders •  Default: VirtualBox shared folder •  Performance bei

    vielen Dateien gering •  Alternative: NFS •  Host (nfsd) und Guest müssen NFS unterstützen 15 ... # synced folders config.vm.synced_folder ”folder1", "/home/vagrant/folder1” config.vm.synced_folder ”data", "/vagrant_data”, nfs: true ...
  12. Synced folder benchmark 16 Test Zeit VirtualBox Shared folder 5m

    14s Host Dateisystem (ohne Vagrant) 10s Natives VM Dateisystem 13s NFS Shared folder 22s NFS Shared folder (warm cache) 14s
  13. Eigene Base box erstellen •  Neue VirtualBox VM anlegen • 

    Konventionen •  User: vagrant / vagrant •  Root PW: vagrant •  Spezielle SSH Keys hinterlegen •  Minimale Installation •  USB/Audio deaktivieren •  So wenig Ressourcen wie möglich •  Ruby, Puppet & Chef installieren •  VirtualBox Guest additions installieren 17
  14. Eigene Base box erstellen •  Ins Verzeichnis der VirtualBox VM

    wechseln •  .box Datei erstellen 18 $ vagrant package --base VMName
  15. Dos & Don’ts •  DO •  Eigene Base box erstellen

    wenn eine spezielle Distribution benötigt wird •  Konfiguration über Provisioner •  DON’T •  Alles in der Base box installieren •  Vagrant (in der Standardkonfiguration) für die Live Server einsetzen 19
  16. Praxisbeispiel: Workflow für Entwickler •  Anforderung: Zum Wochenstart eine frische

    Datenbank für alle Entwickler •  Sonntag Abend: Neuen DB Dump generieren •  Montag Morgen: 20 $ git pull $ vagrant destroy $ vagrant up
  17. Entwickler Versch. Testumgebungen Alte Versionen Versch. Projekte Manuelle Verwaltung Arbeitgeber

    Versch. Projekte Alte Projekte Neue Entwickler im Team 21 ✔ ✔ ✔ ✔ ✔ ✔ ✔
  18. Speeding up? •  JBoss, Activiti, PlayFramework (Netty), MySQL, Latex, …

    •  Setup Time: 5-6h •  Setup Time mit Vagrant: 90 Minuten 22
  19. Szenarien •  Agenturen und Freelancer •  Abgeschlossene Projekte noch einmal

    aktualisieren •  Schnell wachsende Entwicklerteams •  Komplexer Softwarestack zum Test nötig 23
  20. Probiert es aus! •  Repository bei github •  Branch “quickstart”

    mit allen Chef recipes •  How To •  VirtualBox herunterladen & installieren •  Vagrant herunterladen & installieren •  Magento herunterladen •  Repository auschecken •  Magento in ./magento Ordner entpacken •  vagrant up (aus Verzeichnis in dem Vagrantfile liegt) 24