vagrant-dev-environments



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

FIN

Noah Adams

noah@mobify.com