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

Speeding up your development team with vagrant

28764a44623db0ef2d95b914054c916f?s=47 Robin Müller
November 07, 2013

Speeding up your development team with vagrant

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

28764a44623db0ef2d95b914054c916f?s=128

Robin Müller

November 07, 2013
Tweet

More Decks by Robin Müller

Other Decks in Technology

Transcript

  1. 1 SPEEDING UP YOUR DEVELOPMENT TEAM WITH VAGRANT Robin Müller

    | @_RobM | 2013-11-07
  2. 2

  3. 3

  4. 4 PHP 5.4.21 PHP 5.5.5 MySQL MariaDB PHP 5.3.27 Percona

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

    Arbeitgeber Versch. Projekte Alte Projekte Neue Entwickler im Team
  6. Lösung? Virtualisierung! 6 Host Guest (Testing) Dev tools Webserver DB

    Server JVM …
  7. Entwickler Versch. Testumgebungen Alte Versionen Versch. Projekte Manuelle Verwaltung Arbeitgeber

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

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

    •  Einfacher Workflow •  Fokus auf Automatisierung •  Wichtige Begriffe: •  Base box •  Provider •  Provisioner •  Synced folder 9
  10. 10 Host Dev tools Webserver DB Server JVM … Guest

    (Testing) Provisioners
  11. 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
  12. 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
  13. Lifecycle 13 Base boxes Working box add init precise64 Vagrantfile

    up Defined box destroy halt Defined box up Defined box
  14. 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
  15. 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 ...
  16. 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
  17. 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
  18. Eigene Base box erstellen •  Ins Verzeichnis der VirtualBox VM

    wechseln •  .box Datei erstellen 18 $ vagrant package --base VMName
  19. 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
  20. 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
  21. Entwickler Versch. Testumgebungen Alte Versionen Versch. Projekte Manuelle Verwaltung Arbeitgeber

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

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

    aktualisieren •  Schnell wachsende Entwicklerteams •  Komplexer Softwarestack zum Test nötig 23
  24. 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
  25. 25 @_RobM https://github.com/RobM84/devparadise-vagrant/ https://speakerdeck.com/robm84

  26. Weiterführende Informationen 26 •  http://www.codinghorror.com/blog/2007/03/the-works-on- my-machine-certification-program.html •  http://www.vagrantup.com/about.html •  https://coderwall.com/p/uaohzg