Vollblut Onliner und PHP-Entwickler
www.wichteldesign.de / www.felixpeters.de
Twitter: @el_wichtel
Github: Wichteldesign
Eine kurze Einführung
Linux? Ok, easy...
MAMP/XAMPP?
Virtual Box?
Direkt am Server?
Was ganz anderes? (erzählen!)
- unknown developer -
+ Provider
+ Provisioner
+ Plugins
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise64" config.vm.network "forwarded_port", guest: 80, host: 8081 config.vm.synced_folder "vagrant", "/var/www/vagrant" config.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--memory", "1024"] end config.vm.provision "chef_solo" do |chef| chef.add_role "webserver" } end end
VirtualBox, VMware, Docker, Hyper-V, Amazon AWS, Rackspace, ...
Images von vorinstallierten Systemen (Linux, Windows, ...)
Sind Provider abhängig!
Shell, Chef, Puppet, Ansible, Docker, Salt, ...
http://www.wix.com/blog/wp-content/uploads/2012/01/WhopperVMcDonalds.jpg
Hier wird's tricky, aber mächtig!
Dokumentierte Umgebung
Versionierbar
Wiederholbar - auf Dev, Stage und Live!
Erweitern Vagrant um weitere nützliche Funktionen
z.B Package Manager für Provisioner wie librarian usw.
Provider für AWS, Racksapce, ...
https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins
Ordner zwischen Gast-System und VM syncronisieren
RSync, SMB, NFS, VirtualBox
config.vm.synced_folder "vagrant", "/var/www/vagrant"
Lokale Ports auf die VM mappen und weiterleiten
Vagrant.configure("2") do |config| config.vm.network "forwarded_port", guest: 80, host: 8080 end
Neu seit Vagrant 1.5
Tunnel in die VM von außerhalb (z.B. für Payment Systeme)
Alternative: Ngrok
Production Umgebung nachstellen
Mehrerer VM's deployen aus einer Konfiguration
API lokal testen
Ausfälle, Cluster usw. lokal testen
Vagrant.configure("2") do |config| config.vm.provision "shell", inline: "echo Hello" config.vm.define "web" do |web| web.vm.box = "apache" end config.vm.define "db" do |db| db.vm.box = "mysql" end end
Jenkins kann Vagrant Boxen starten und deployen