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