7 ms·
Vagrant core no longer tied to VirtualBox
- jacques_chester 14y agoThis is exciting news. I know one fellow who built a large private cloud for his organisation (about two racks of topline gear) so that they could simulate an architecture of several dozen servers and thousands of complex, concurrent transations. What's it built on? VMWare. He was not totally amused when I sent him a link to Vagrant. (I understand VMWare have similar fleet-orchestration tools, but not development-oriented as vagrant is -- awesome for production though). Putting aside my friend, I can also see performance gains from in-kernel virtualisation schemes such as KVM^w lxc or Solaris Zones. Bravo to the Vagrant team. This tool has become one of the centrepieces of how I personally do development.
- justincormack 14y agoKVM is a full virtualization solution, Zones is a container (same kernel). Maybe you mean lxc, the Linux container system?
- jacques_chester 14y agoThanks for the correction.
- velniukas 14y agoLXC is great but does have its limitations. We are currently building a vagrant like solution and GUI for LXC/Vagrant/vSphere/ESXi/Xen/AWS etc which will launch in beta in the next couple of months - sign up at http://10xlabs.net http://10xlabs.net if you are interested in following progress
- mitchellh 14y agoThanks! Vagrant will soon be able to control development cycles around private clouds just like this. This is exactly the use case I am building for. Let your friend know!
- kodablah 14y agoI believe it will also be able to be used for public clouds with all the API's providers have now.
- rwmj 14y agoReimplementing libvirt, badly ...
- gauravk92 14y agoThey are right now in the stages of removing proprietary code towards a modular architecture. I think it's more likely they could implement libvert as a plugin. The focus isn't to make a pluggable architecture for vm emulators(libvert). But to make vagrant itself more robust, by removing it's ties to virtualbox with a plugin system.
- fingerprinter 14y agoI've always liked what vagrant did for the other systems (re: non-linux). However, with this change, it seems they are indeed going in this direction and, well, that is a shame. I might be missing something but it seems they would do much better to build on other tech. The best I've seen is Ubuntu and how it does it (using libvirt among others, KVM etc - http://www.ubuntu.com/business/server/virtualisation http://www.ubuntu.com/business/server/virtualisation). Would be awesome if they were all playing well together. And, perhaps, vagrant is going to actually do that in the future.
- tillk 14y agoUbuntu's business server is hardly something as turn-key as vagrant. We use Ubuntu on EC2 and Canonical has made so many atrocious decisions since the release of 10.04, I am not sure if I ever want to run anything from them again. =( We are however heavily invested with custom PPAs and all that. Back to Vagrant - as others said before: `vagrant up` and productivity starts. At work I manage local and remote people and they all work with Vagrant. It works the same for developers and frontend people. And most importantly: it works. Yes, there are ins and outs, but they are mostly Virtualbox related and I cannot wait until other virtualization is supported.
- fingerprinter 14y agoEverywhere I look with Ubuntu they are making the right decision, so I'm not sure which decisions you mean. Can you elaborate? My thoughts are: Server: Juju is just plain awesome. If you manage hundreds or thousands of servers, it is Fan-Freakin'-tastic. Seriously, that alone is worth the price of admission. They backed openstack very early, which looks like the winner. They are THE option for EC2. Heck, even Azure is picking up Ubuntu. More here: http://www.ubuntu.com/cloud http://www.ubuntu.com/cloud If I was deploying in the Cloud, there is no other OS I would choose (and I am). IMO, it would be crazy to not use Ubuntu. Desktop: Unity is an interesting choice, and if you asked me 3 years ago I would probably have said it was a bad choice, but seeing the state of GNOME these days, it is easily the best choice Canonical has made in the past few years. And then there are the demo products like Ubuntu for Android, which is just plain awesome. The TV, though I'm not sure how viable it is as a commercial entity, is slick. And there is talk of a phone/tablet. Is there room for a third or fourth person in this market? With the patent problems, probably, I don't know. Though, I have to admit, I'd like to see what an Ubuntu phone and tablet would look like!
- shell0x 14y agoGood to hear this. I had several issues with Virtual Box in the past on OS X(Lion, Mountain Lion) and it even produced 3-4 times a kernel crash on my MacBook. I switched to VMWare Fusion then and all the complains were gone.
- snprbob86 14y ago> Showing 122 changed files with 4,156 additions and 2,915 deletions. Wow, that's a lot of code for a tool which is doing little more than creating, starting, stopping, deleting, and zipping-up VMs. Looking at this diff, all I can say is: Holy Java-ish Ruby, Batman! Most of these classes contain two non-helper methods: init and call. That's not a class; that's a function! I'm reminded of this talk, titled "Stop Writing Classes": http://news.ycombinator.com/item?id=3717715 http://news.ycombinator.com/item?id=3717715 I've used Vagrant before, but it always felt like overkill. When I had an issue with it, I cracked open the code and was quickly deterred from digging deeper. I hacked my VM back to working by hand and decided to avoid mucking with Vagrant. The next time I need automated development VM provisioning, I plan to write a very small shell script. Here's an example of getting a box up and running with 7ish commands: http://www.linux-mag.com/id/7673/ http://www.linux-mag.com/id/7673/ For a complete development environment, you only need to additionally mount a shared filesystem and write an entry into your ssh config. All that said, I do think that there is value in having a command line tool which abstracts various machine provisioning APIs. I know that such a thing exists for cloud providers, but I suspect local VMs have some unique concerns. Regardless, it seems like a task that a shell script is best suited for.
- bitshift 14y agoYes, the project seems to have around 380 files. I'd be interested to hear from the author if he's reading this thread why the codebase is at this size. Perhaps VirtualBox quirks necessitate a large part of it?
- halfasleep 14y agoVagrant does have support for the general case, where something in 7 lines will be a bit more specific. For example, Vagrant will handle cross distro/OS NFS shared folders.
- mitchellh 14y agoVagrant author here. Files in lib/ (core): 71 Files in plugin/: 142 Total: 213. Still a lot of files but not 380, just wanted to point that out. Each individual file is actually rather small. There are only a few larger files in there (Vagrant::Environment actually perhaps being the only one). "Why the codebase is at this size." Well, Vagrant started very small, but in the 3 years of its existence, it has gained a lot of what I've previously heard called as "code wisdom:" * Generic host support since some tasks are host-specific. For example, setting up NFS on Mac OS X differs from Ubuntu which differs from FreeBSD. Vagrant knows this. * Generic guest support. Setting up a variety of things is guest OS specific, so again, Vagrant knows how to configure networks, mount folders, etc. on a variety of different guest operating systems. * VirtualBox bugs. Vagrant has quite a bit of code to work around VirtualBox bugs. * Networking is hard. Vagrant does quite a lot with networking to ensure your networking works as expected. It also does things like port collision detection to verify that any ports you choose won't collide with any other VMs as well as making a best effort to check if that port is open, and erroring in that case as well. * Plugin interface. Almost every part of Vagrant at this point in git master is customizable. This isn't overkill, this was built out of seeing actual human need for this. This lowers the number of features I need in core and actually fights being overkill, because more things can be built with plugins. * Communication abstraction. Linux and POSIX-like guests with SSH is great, but what happens when you want to run Windows guests? SSH CAN work but isn't ideal. For this reason, Vagrant is started to abstract out communication so that Windows can use things like WinRM, completely transparently. Also, if you use something like VMWare, it uses the VMWare guest communication API, which is blazingly faster than SSH. Again, this is all transparent to plugin developers, provisioners, etc. It "just works." It does much more, but I think you get the idea. Building something that "just works" comes at a cost. And that cost is usually complexity. Can you build a very basic tool to control VirtualBox virtual machines in a small shell script? You betcha! Vagrant started this way. Can you make that reusable? Yeah, but prepare to add some complexity. Then make it run on every major OS and support some nifty features and you got yourself a big project. I hope that helps!
- Axsuul 14y agoThis is really great news. Vagrant has really made my life easier as a developer, thanks Mitchell! I prefer VMware so this is awesome! I personally think vagrant needs a UI manager of some sorts (I 'm thinking about doing this when I have more free time). I have about 10-15 vagrant boxes now and it can be a pain to manage. Having to go into each project directory and manually up'ing each vagrant box can be tedious.
- bitshift 14y agoI'm not sure what are the benefits of supporting many VM providers for a tool that is meant for development (as far as I understand at least). Isn't VirtualBox sufficient? It is open source and runs on Linux, OS X and MS Windows. Perhaps I am missing some core idea. Then there is veewee[1] which started life as a Vagrant plugin but as of version 0.3.0 it can be used standalone and one can ssh to the boxes using it, just like with Vagrant. If they were to add provisioning it would probably be an alternative to Vagrant feature for feature so maybe we're seeing a bit of competition between these two tools there. On Ubuntu there is VMBuilder[2] written in Python but it doesn't offer provisioning as far as I know. Last, as others have mentioned there is libvirt[3] which offers tools for communicating with different VMs but I don't think it offers a tool that matches what Vagrant does 1:1 (most notably the provisioning part). 1. https://github.com/jedi4ever/veewee/blob/master/doc/README-changes.txt https://github.com/jedi4ever/veewee/blob/master/doc/README-c... 2. https://launchpad.net/vmbuilder https://launchpad.net/vmbuilder 3. http://libvirt.org http://libvirt.org
- davnola 14y agoveewee is being merged into vagrant.
- bitshift 14y agoI wasn't aware of this. Have you seen anything that supports it?
- malsme 14y agoBuilding a product on top of another isn't the best of ideas (without having alternatives). Plus, VB is Oracle.
- rwmj 14y agoI believe that Oz and Heat (http://heat-api.org/ http://heat-api.org/) are built on libvirt. I hate all these daft code names ...
- Uchikoma 14y agoI had so bad experiences with Virtualbox (Dropping interfaces, crashing, ...) and switched to VMWare (Mac OS X). So I applaud the support of different providers.