Vagrant to the rescue

Db6218c1b56d64e775eb79ea4f2889dd?s=47 Sebastian
October 04, 2014

Vagrant to the rescue

Many developers know the pain of setting up a development machine and share the setup with the team - Putting the same folders in the same place, keeping configurations in sync and managing external dependencies. Vagrant solves this problem by creating a development environment inside a virtual machine and making it easy to share with other developers. Within this talk, I'll take the audience on a trip from a time where everybody would install stuff on localhost until the software starts working to a land where the environment one develops in mirrors the production environment as closely as possible without changing the laptop/pc of the developer. I'll talk about devops and configuration management briefly and show how one can get started with vagrant. After this talk, the audience knows what problems vagrant solves and how to get started.

Db6218c1b56d64e775eb79ea4f2889dd?s=128

Sebastian

October 04, 2014
Tweet

Transcript

  1. Vagrant to the rescue WebCamp Zagreb 2014 @Sgoettschkes http://nos.twnsnd.co/image/95830917309

  2. “It works on my machine”

  3. “It’s all in SETUP.md”

  4. Enter vagrant

  5. Building blocks Configuration + Provider + Provisioner + Plugins =

    Vagrant http://pixabay.com/static/uploads/photo/2010/12/10/08/salad-1105_640.jpg
  6. Configuration Vagrant.configure(2) do |config| config.vm.box = "Sgoettschkes/debian7" config.vm.network "private_network", ip:

    "127.0.0.101" config.vm.synced_folder "../", "/srv/workspace" config.vm.provision "chef_solo" do |chef| chef.add_recipe "main" end end
  7. Providers

  8. Provisioners

  9. Synced folders http://upload.wikimedia.org/wikipedia/commons/5/5d/BalticServers_data_center.jpg

  10. SSH http://pixabay.com/static/uploads/photo/2013/04/08/22/48/tunnel-101976_640.jpg $ vagrant ssh # or $ ssh -p

    2222 vagrant@localhost # with password “vagrant”
  11. Plugins # AWS provider $ vagrant plugin install vagrant-aws #

    Boxen provisioner $ vagrant plugin install ventriloquist # Manage host files $ vagrant plugin install vagrant-hostmanager # Make screenshots of your VM $ vagrant plugin install vagrant-camera # … many more!
  12. Basic workflow $ vagrant init hashicorp/precise32 $ vagrant up #

    box is booting $ vagrant ssh # you are now inside your vm $ vi Vagrantfile # change config # add provisioners and so on # don’t forget to comit Vagrantfile and provisioners to git! http://freehddesktopwallpaper.info/wp-content/uploads/2013/06/Blue-Flowers-hd-Wallpapers.jpg
  13. Basic workflow $ git clone git@github.com:awesomecompany/awesomeVm.git $ cd awesomeVm &&

    vagrant up # Hack away $ git pull --rebase $ vagrant provision # Hack some more and change provision files $ vagrant provision $ git commit -am ‘Incredible changes’ && git push http://freehddesktopwallpaper.info/wp-content/uploads/2013/06/Blue-Flowers-hd-Wallpapers.jpg
  14. Use cases

  15. Use cases Development environment

  16. Use cases Development environment Testing environment

  17. Use cases Development environment Testing environment Local test box for

    PMs & Designer
  18. Use cases Development environment Testing environment Local test box for

    PMs & Designer Playing around
  19. Use cases Development environment Testing environment Local test box for

    PMs & Designer Playing around with clusters
  20. Use cases Development environment Testing environment Local test box for

    PMs & Designer Playing around with clusters Open Source projects
  21. What about... chef vs puppet?

  22. What about... one vs many boxes?

  23. What about... base boxes?

  24. … performance?

  25. http://community.openatria.com/sites/community.openatria.com/files/vagrant.png

  26. Vagrant “Development environments made easy” http://fc02.deviantart.net/fs50/i/2009/315/4/c/Tweaked_toy_airplane_by_afd.jpg