Entwicklunghilfe

logoagrant

Andreas Mautz || @mautz_et_tong webvisum GmbH

Was?

  • Was ist Vagrant?
  • Wofür brauche ich das?
  • Beispiele
  • Ausblick

Wer?

  • Andreas Mautz
  • programmiert seit 18 Jahren
  • macht magento seit 2008
  • beschäftigt sich mit Deployment-Prozessen, Entwicklungsinfrastrukturen und Wissensmanagement seit 2011

Was ist Vagrant?

Vagrant bietet einfach zu konfigurierende, reproduzierbare und portable Arbeitsumgebungen auf Grundlage des Industriestandards.

Gebaut und gesteuert von einem konsistenten Workflow, hilft es dir, die Produktivität und Flexibilität von dir und deinem Team zu maximieren.

Um seinen Zauber zu entfalten benutzt Vagrant weit verbreitetete und etablierte Software. Maschinen werden auf VirtualBox, VMware, AWS oder auf (fast) jeder anderen Software dieser Art aufgesetzt.

Zusätzlich kannst du Provisioning-Tools wie Shell-Skripte, chef, oder puppet benutzen, um automatisch Software zu installieren und zu konfigurieren.

frei nach vagrant

Wofür brauche ich das?

Wer kennt das nicht?

  • Bei mir funktioniert das
  • Auf stage sieht das aber komisch aus
  • Welche Version von X benutzen wir nochmal bei Kunde Y?

Typische Anwendungsfälle

  • Serverkonfigurationen testen
  • Software testen
  • Projekt aufsetzten
  • Entwicklungsstand teilen

Vorteile

  • Teilbare Projektbestandteile
  • Konsistent
  • Idempotent
  • Abhängigkeiten
  • Konfiguration
  • Entwicklungsumgebung als Code

Spart

  • Zeit
  • Geld
  • Frustration
  • Dokumentation

Beispiele

Voraussetzungen

Vagrantfile

                            # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    VAGRANTFILE_API_VERSION = "2"
    
    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    
    config.vm.box = "deb/wheezy-amd64"
    
    config.vm.network "private_network", ip: "33.33.33.100"
    
    config.vm.synced_folder "data", "/vagrant_data"
    config.vm.synced_folder "vendor", "/vendor"
    
    config.vm.provision :shell, :inline => "sudo apt-get update && sudo apt-get install puppet -y"
    [...]
                        

kann jederzeit im bestehenden Projekt umgesetzt werden

Befehle

  • vagrant init deb/wheezy-amd64
  • vagrant up
  • vagrant ssh
  • vagrant halt
  • vagrant destroy
  • vagrant package

Geht es auch schwieriger?

Ja, mit Provisionierung

                    [...]
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet/manifests"
puppet.manifest_file  = "base.pp"
puppet.module_path    = "puppet/modules"
#puppet.options        = "--verbose --debug"
[...]
                

Ausblick

magento

Ausblick

puppet

Ausblick

Docker

Fragen?

Quellen?

vagrant

Eigene Boxen

Danke!