Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'......
Transcript of Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'......
![Page 1: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/1.jpg)
Christoph Lühr@chluehr / @bephpug 2013
"Rags to Riches"
Vagrant for PHP
![Page 2: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/2.jpg)
basilicom
![Page 3: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/3.jpg)
![Page 4: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/4.jpg)
Image source: http://www.flickr.com/photos/stinajonsson/3932774410 CC BY-NC 2.0
![Page 5: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/5.jpg)
"Create and configurelightweight, reproducible, and portable
development environments."
![Page 6: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/6.jpg)
"Infrastructure as Code"
- FTW!
![Page 7: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/7.jpg)
Development
![Page 8: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/8.jpg)
Own Workstation(LAMP, XAMP, MAMP, ...)
![Page 9: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/9.jpg)
Shared System(Linux Dev. Box in LAN)
![Page 10: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/10.jpg)
Virtual Machine(VMware, VirtualBox, ...)
![Page 11: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/11.jpg)
Problems!
● OSX / Windows / Linux● 32 / 64 bit● Conflicts!● Docs / Setup● Versions / Dependencies
● ⇒ "Works on my box!"
![Page 12: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/12.jpg)
Vagrant&& Virtual Box
![Page 13: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/13.jpg)
apt-get install \vagrant
(Packages for Windows, OSX, too)
![Page 14: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/14.jpg)
Vagrantfile(Ruby)
![Page 15: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/15.jpg)
Vagrant::Config.run do |config|
# Base Box Name config.vm.box = "precise64"
# Base Box URL
config.vm.box_url = ↵ "http://files.vagrantup.com/precise64.box"
# Configure / Install Packages, Application
config.vm.provision :shell, ↵ :path => "setup.sh" end
![Page 16: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/16.jpg)
setup.sh(bash / shell)
![Page 17: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/17.jpg)
#!/bin/bash
apt-get update
apt-get install libapache2-mod-php5apt-get install php5-mysql
echo "date.timezone = Europe/Berlin" >> /etc/php5/conf.d/date.ini
service apache2 restart
![Page 18: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/18.jpg)
vagrant command
![Page 19: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/19.jpg)
Demo
![Page 20: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/20.jpg)
vagrant up
1. Downloads Base Box Image
2. Creates VM from Base Box
3. Configures VM Guest
4. Boots VM
5. Installs / Configures Packages
.
![Page 21: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/21.jpg)
$ vagrant up
[default] Importing base box 'precise64'...[default] Matching MAC address for NAT networking...[default] Clearing any previously set forwarded ports...[default] Forwarding ports...[default] -- 22 => 2222 (adapter 1)[default] -- 80 => 8080 (adapter 1)[default] Creating shared folders metadata...[default] Clearing any previously set network interfaces...[default] Running any VM customizations...[default] Booting VM...[default] Waiting for VM to boot. This can take a few minutes.[default] VM booted and ready for use![default] Mounting shared folders...[default] -- v-root: /var/www[default] Running provisioner: Vagrant::Provisioners::Shell...stdin: is not a tty==== BEGIN: Vagrant-setup.sh ====
![Page 22: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/22.jpg)
vagrant command up halt reload destroy ...
![Page 23: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/23.jpg)
Features!
Image source: http://www.flickr.com/photos/rietje/76566707/ CC BY 2.0
![Page 24: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/24.jpg)
Multiple-VMs(Apache / DB-Master / DB-Slave)
![Page 25: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/25.jpg)
VMware, AWS EC2, ...(Providers / Platforms)
![Page 26: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/26.jpg)
Puppet / Chef(Different Installers/Provisioners)
![Page 27: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/27.jpg)
Custom Base Boxes(Speed up Setup)
![Page 28: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/28.jpg)
Drawbacks
![Page 29: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/29.jpg)
Slow File System(vboxsf, NFS, CIFS, ... SSD!)
![Page 30: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/30.jpg)
RAM
![Page 31: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/31.jpg)
"Rags to Riches"
Success Story!
![Page 32: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/32.jpg)
Documented, RepeatableStable Process, mirrors Live-System
![Page 33: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/33.jpg)
Development Speed++(Setup, new Colleagues, less fiddling)
![Page 34: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/34.jpg)
Open Source ProjectsBenefits: easier evaluation / collaboration
![Page 35: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/35.jpg)
1. git clone
2. vagrant up
3. ...
4. Profit!
![Page 36: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/36.jpg)
ContactChristoph LühreMail: [email protected], [email protected] Twitter: @chluehr
Slides licenseAttribution-NonCommercial-ShareAlike 3.0http://creativecommons.org/licenses/by-nc-sa/3.0/
Thanks!
Questions?
![Page 37: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously](https://reader035.fdocuments.in/reader035/viewer/2022081607/5ededbb7ad6a402d666a36d5/html5/thumbnails/37.jpg)
Links
● Vagranthttp://www.vagrantup.com/
● Roundcube Fork with Vagrantfilehttps://github.com/chluehr/roundcubemail