SlideDeck.io – A repository of great HTML presentations
vagrant-dev-environments
View Github Repository
Open presentation in a new window
noahadams
See all presentation from noahadams
vagrant-dev-environments
0
0
vagrant-dev-environments
A presentation on building development environments with Vagrant
On Github
noahadams / vagrant-dev-environments
Building Development Environments With Vagrant
Vagrant
Easy automation for Virtual Machines
Supports many platforms and virtualization technologies
Integrates with cloud providers
Supports system automation tools, specifically Puppet and Chef
Lots more...
http://www.vagrantup.com/
Why use Virtual Machines for Development?
Keep your dependencies contained
Run your code on other machines more easily
Reproduce your production stack
Reproduce your CI environment
Use it in your CI environment
I knew all this already
VMs have been used for development enironments for ages
We already do this!
How can we do it better?
Use configuration management tools
Set up your application in minutes, not hours
Standardize stack across all developers
Simulate production evironments, from bare metal to PaaS providers
Use configuration management tools
Set up really complicated dependencies (Data Stores, Language Runtimes, C libraries, Operating Systems)
And tests (Selenium, client/server integrations)
Easily test new versions of them
What I like about Puppet
Declarative
Graph-based dependency resolution
Lots of well maintained modules for popular things
Puppet Modules
Are maintained b both Puppet Labs and the community at large
Allow dangerous levels of configuration abstraction
Might not be suitable for your production use
But might be just the ticket for development
A Really Contrived Demo
Tips and Caveats
Git submodules seem like the easiest way of managing Puppet module dependencies, but they are still git submodules
If things get too complicated, a package dependencya nd a config file might be enough
The Future
Use Vagrant to produce your build artifact
VM Image
Docker Container
Links
Vagrant
Puppet Labs on Github
FIN
Noah Adams
noah@mobify.com