Live data from Hacker News

Vagrant 1.4

vagrantup.com

21–30 of 64 posts

Re: Vagrant 1.4

#21

For anyone who doesn't know. Vagrant acts like a wrapper around VMware, VirtualBox, or even AWS, so that you can easily automate testing. You can also share your Vagrant boxes (images) with others in an easy manner. Vagrant is one of those things, that once you start to use it, you wonder how you managed without it. I have created several screencasts about Vagrant: Learning Vagrant @ http://sysadmincasts.com/episodes…

Can you explain what Vagrant adds on top of VirtualBox? When I tried it it didn't seem that different than just using VirtualBox directly.

[deleted]

Re: Vagrant 1.4

#22

For anyone who doesn't know. Vagrant acts like a wrapper around VMware, VirtualBox, or even AWS, so that you can easily automate testing. You can also share your Vagrant boxes (images) with others in an easy manner. Vagrant is one of those things, that once you start to use it, you wonder how you managed without it. I have created several screencasts about Vagrant: Learning Vagrant @ http://sysadmincasts.com/episodes…

Can you explain what Vagrant adds on top of VirtualBox? When I tried it it didn't seem that different than just using VirtualBox directly.

Not the parent post, but from my limited use of Vagrant so far, the main difference is that there's a "base" image that you can quickly reset to in order to test the repeat-ability of your deploys. The images also automatically handle VirtualBox's shared folders feature and require little for configuration.

Other than that, I agree it's almost like just using VBox directly.

Re: Vagrant 1.4

#23

For anyone who doesn't know. Vagrant acts like a wrapper around VMware, VirtualBox, or even AWS, so that you can easily automate testing. You can also share your Vagrant boxes (images) with others in an easy manner. Vagrant is one of those things, that once you start to use it, you wonder how you managed without it. I have created several screencasts about Vagrant: Learning Vagrant @ http://sysadmincasts.com/episodes…

Can you explain what Vagrant adds on top of VirtualBox? When I tried it it didn't seem that different than just using VirtualBox directly.

The biggest thing it adds on top of VirtualBox is a consistent workflow. If it helps, think of what Vagrant does technically as useless, and think of Vagrant only as a process discipline: to get a dev environment for any project you "vagrant up", to close it out "vagrant destroy", to access it "vagrant ssh", etc.

As soon as you get this consistent workflow, then you can teach it to your entire organization and the whole company knows that ANY project in the company can be worked on using this workflow without any dependencies on their own machine.

And if ops decides to suddenly change the dev environment from VirtualBox to say... AWS... nothing changes! I've had large companies (200+ developers) switch from VirtualBox to VMware to AWS for their dev environments without their developers ever really noticing.

That is pretty cool.

Of course, on top of this, you get a lot of nice things: you get provisioners, you get automatic network configuration, you get the entire plugin community, you don't have to worry about stability on your own because you tap the collective stability of thousands of users, etc.

But the real power is workflow.

Re: Vagrant 1.4

#24

Probably not the right venue, but I'm a bit disappointed addressing the plugin versioning situation isn't listed as a thing for 1.5. There are plugins for managing plugins but they're really less than ideal. I'd honestly just like to use bundler for it, since it's almost certainly better than anything anyone's likely to make to replace it, but using bundler to run vagrant is currently considered bad for some reason a…

Bundler doesn't work with Vagrant because Vagrant ships with its own Ruby and RubyGems and all that. So... your Bundler you're executing has a really screwed up state of the world. Its something that certainly needs to be solved, but I think solutions needs more time to mature in my head as well as others.

The problem right now is that plugins create a screwed up state of the world and their usefulness is rapidly climbing.

Installing the vagrant-chef-zero plugin, for example, is a real PITA because the dependency resolution doesn't deal with a json dependency correctly leading to it or chef zero failing to load unless you install them in a very specific order.

On the other end of the spectrum, when you're writing a Vagrantfile it's technically almost impossible to know what's going to happen when a user starts it up because of all the hooks plugins can throw in, and you can't tell Vagrant not to load a plugin (which would be an incomplete solution anyways, since I can't know what plugins or plugin versions will have bad interactions).

I know you wrote vagrant, so you have a more inside perspective on this, but as a user and occasional plugin writer, it feels like with a gemfile I can specify a state of the world that's considerably less screwed up than the completely random world any given user's install of Vagrant might be.

Re: Vagrant 1.4

#25

> Work will begin on pulling the Vagrant AWS integration into the core distribution -- to start -- so that you can use Vagrant with AWS (and other providers) right after installing it and without having to juggle plugin versions. This is awesome, I can't wait. I've been waiting for this!

I am thrilled about this as well. Most of my projects right now have had all of their Vagrant plugin dependencies, including Vagrant itself, in the Gemfile because I wanted to make sure any developer could get a workable development environment without worrying too much about Vagrant versions. On one hand I like the fact that I can install up-to-date plugins this way, but on the other hand I just want it to work out…

I really like how Gradle has solved this problem. You check in the Gradle wrapper (http://www.gradle.org/docs/current/userguide/gradle_wrapper....) into your source control (it's only 56K), and it automatically fetches Gradle for you if you don't have it. Updating the project's Gradle version is just a matter of changing one or two lines.

It's cool to think that the only requirement for anybody to jump into a Gradle project is to have the JDK installed. "git clone ", "./gradlew assemble" is all it takes for you to fetch all your dependencies and build the project.

I think it'd be interesting to see if Vagrant could incorporate something like this; it sounds like it would help your use case.

Re: Vagrant 1.4

#26
Congratulations to mitchellh and the Vagrant team. Vagrant is a fantastic tool for streamlining workflows, but also an amazing educational opportunity. Disposable Linux servers: Play, experiment, destroy, try again. Thank you for this, I can't believe how much I've learned.

Re: Vagrant 1.4

#27
post #15

I like vagrant, but would love it to work with VMWare fusion, but cannot justify paying more than the cost of fusion for a vagrant plugin. Anyone aware of an open source alternative to the official VMWare provisioner?

Why is using Virtual Box not an option if you are price sensitive?

Re: Vagrant 1.4

#28

For anyone who doesn't know. Vagrant acts like a wrapper around VMware, VirtualBox, or even AWS, so that you can easily automate testing. You can also share your Vagrant boxes (images) with others in an easy manner. Vagrant is one of those things, that once you start to use it, you wonder how you managed without it. I have created several screencasts about Vagrant: Learning Vagrant @ http://sysadmincasts.com/episodes…

Can you explain what Vagrant adds on top of VirtualBox? When I tried it it didn't seem that different than just using VirtualBox directly.

I use Vagrant daily. Here's an example I was working on today.

I needed to spin up 5 servers, a load balancer and 2 groups of 2 backend servers. I needed to provision them with Chef, have full name resolution, and be able to access the servers from my host machine.

Here's my Vagrantfile

    Vagrant.require_plugin "vagrant-chef-zero"
    Vagrant.require_plugin "vagrant-berkshelf"
    Vagrant.require_plugin "landrush"

    last_ip_octet = 10
    DOMAIN = "vagrant.dev"

    Vagrant.configure("2") do |config|
      config.landrush.enable
      config.chef_zero.chef_repo_path = "./"
      config.omnibus.chef_version = '11.8.0'
      config.vm.box = "opscode_ubuntu-12.04_provisionerless"
      config.vm.box_url = "https://opscode-vm.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box"

      %w{default metrics}.each do |backend|
        (1..2).each do |i|
          config.vm.define "be_#{backend}_#{i}".to_sym do |cfg|
            last_ip_octet += 1
            cfg.vm.hostname = "be-#{backend}-#{i}.#{DOMAIN}"
            cfg.vm.network :private_network, :ip => "192.168.33."+last_ip_octet.to_s
            cfg.vm.provision :chef_client do |chef|
              chef.node_name = "be-#{backend}-#{i}"
              chef.add_role "backend_#{backend}"
            end
          end
        end
      end

      config.vm.provision :shell, :inline => "/usr/bin/apt-get update --fix-missing"
      config.vm.define :lb do |cfg|
        last_ip_octet += 1
        lb_ip = "192.168.33."+last_ip_octet.to_s

        cfg.vm.hostname = "lb.#{DOMAIN}"
        cfg.vm.network :private_network, :ip => lb_ip
        cfg.vm.provision :chef_client do |chef|
          chef.node_name = "lb"
          chef.add_role "lb"
        end
      end
    end
This utilizes a few vagrant plugins, vagrant-chef-zero, vagrant-berkshelf, and landrush which are one liners each to install. After that, I can type

    vagrant up  # build my stack from scratch
    vagrant destroy # destroy my stack
    vagrant ssh lb # ssh into the lb instance
    vagrant provision # execute chef (puppet, ansible, bash, etc)
Can you show me equivalent code that fulfills all my requirements using VirtualBox directly and will allow me to change a couple lines to spin this same infrastructure up in AWS or using VMWare?

Re: Vagrant 1.4

#29

I had hoped that their Docker support would be some magical mechanism that would treat Docker as a kind of VirtualBox. That is, instead of using VirtualBox to create VMs, they would use Docker to create containers. 'vagrant ssh' would then SSH directly into a container instead of the host VM. Sadly, their Docker support is just a provisioner. :( I can do that myself too in a shell script.

It sounds like you want vagrant-lxc.

Re: Vagrant 1.4

#30
We're using vagrant and ansible to manage local dev instances with the same ansible scripts responsible for provisioning/deployment to our production boxes. My thought being the less I manage with vagrant, and the more I codify stuff in ansible, the more predictable things are when I go to provision/deploy in production.

I'm thrilled with how vagrant helps the process locally, but at the same time want to do as little as possible in vagrant because it's not applicable/involved when I provision/manage a box @ Linode or Digital Ocean.

Am I under-utilizing vagrant? Or missing a greater benefit by limiting its role?

Post reply on HN