DevOps Yourself:
Fast-Track Your Dev Environment Setup
- Over 15 years of programming and windows administration experience.
- Slides: slides.com/digitaldrummerj/devopsyourself
-
Twitter: @digitaldrummerj
- GitHub: github.com/digitaldrummerj/vagranttalk
- Blog: digitaldrummerj.me
- Email: digitaldrummerj @ gmail.com
Justin James
Time to bring on
a new developer
You Hire
an Expert
Who is all excited
Then....
Then
the
setup
instructions
Hours
Later
....
feeling foggy
on the road
to
nowhere
She Becomes
Instead..Make Them Best Friends
=
+
cross-platform
virtualization
high performance
reproducible
lightweight
portable
Setting up the VM
Boxes
portable
skeletons
for building
Virtual Machines
First Machine
mkdir c:\boxes\jekyll
cd c:\boxes\jekyll
vagrant init ubuntu/trusty64
Start up Box
vagrant up
Login to Box
vagrant ssh
Ready to Configure?
This isn't any better.... yet
KEEP CALM
WE HAVE
A PLAN
Option 1
Pre-Configured Box
Pre-Built box
vagrant init digitaldrummerj/jekyll
vagrant up
vagrant ssh
More Pre-Built Boxes
atlas.hashicorp.com/boxes/search
Option 2
Provisioning
Start with Base Box
vagrant init ubuntu/trusty64
Configure VagrantFile
config.vm.provision "shell", path "setup.sh"
config.vm.provision "shell", inline: <<-SHELL
sudo apt-get update
sudo apt-get install -y git
.....
SHELL
Start Up Box
vagrant up
Login into Box
vagrant ssh
All is Right Again
Now What
Other useful commands
vagrant reload
Need to Reboot?
vagrant halt
Need to Shutdown?
vagrant suspend
Need to Hibernate?
vagrant destroy
Done with Project?
vagrant up
Need to Box Again?
More
Configurations
Options
VagrantFile - General
config.vm.box = "ubuntu/trusty64"
config.vm.hostname = "GithubBlog"
config.vm.boot_timeout = 600
config.vm.communicator = "winrm" or "ssh"
VagrantFile - Networking
config.vm.network "forwarded_port", guest: 3389, host: 8080,
auto_correct: false,
id: "rdp"
config.vm.network "private_network", ip: "192.168.33.10",
type: "dhcp"
config.vm.network "public_network",
bridge: 'en1: Wi-Fi (AirPort)',
ip: "192.168.0.17"
VagrantFile - Synced Folders
config.vm.synced_folder '.', '/vagrant', disabled: true
config.vm.synced_folder "c:\\projects",
"/home/vagrant/projects"
config.vm.synced_folder "src", "/srv/website"
VagrantFile - Virtualbox
config.vm.provider "virtualbox" do |vb|
end
vb.gui = false
vb.memory = 2048
vb.cpus = 2
vb.name = "Github Jekyll Blog"
vb.customize ["modifyvm", :id, "--vram", "128"]
vb.customize ["modifyvm", :id, "--usb", "on"]
VagrantFile - Provisioning
Defining Multiple Machines
Provision run order is outside-in
config.vm.provision :shell, inline: 'echo A'
config.vm.define "web" do |web|
web.vm.box = "apache"
web.vm.provision :shell, inline: 'echo B'
end
config.vm.define "db" do |db|
db.vm.box = "mysql"
end
config.vm.provision :shell, inline: 'echo C'
Build & Share
Your Own Box
Easiest way
build out machine
then
package it
Packaging VirtualBox Machine
vagrant package --base NAME --output NAME
Share Box
Hashicorp Atlas
Additional Commands
vagrant box add name [url]
Add New Box
vagrant status
Status of Box
vagrant global-status
Status of All Boxes
vagrant box list
Local Base Boxes
Resources
Vagrant Website - http://www.vagrantup.com
VirtualBox - http://www.virtualbox.org
Vagrant Documentation - https://docs.vagrantup.com/
Vagrant Boxes - https://atlas.hashicorp.com/boxes/search
My blog - http://digitaldrummerj.me/
Questions?
Previous Talk
Rate Links
spkr8.com/t/43011
Please rate this talk!
Fast Track Your Windows Dev Box Setup
By Justin James
Fast Track Your Windows Dev Box Setup
Learn how to get rid of the it works on my machine. Toss the setup manual out the window and learn how to create reproducible setups.
- 4,302