Vagrant, Packer, Veewee.. what to use?

UPDATE:  For a better alternative to Veewee and Packer, click here

Vagrant

Most developers and ops people are familiar with Vagrant, the little tool for launching local virtual machines. I use Vagrant daily, for testing Ansible scripts. I like the idea of booting a VM, running some tests, and then destroying once I realize I completely messed up.

Vagrant is nice. It solves a huge pain for many of us.

Unfortunately, there are two problems associated with using Vagrant.

First: most public Vagrant boxes shouldn’t be trusted. They are often old/outdated, contain unknown packages and software, and are built by random people you might or might not want building boxes for you.

The boxes work, of course, but any serious person wouldn’t dare use them for production servers.

Secondly: Vagrant boxes are not customized for you. You get the partition scheme dictated by its creator, you often get Chef and/or Puppet, and you get useless bloat packages that you may not want.

That leads us to the following tools:

Veewee and Packer

These tools serve a different function. They are generally used by people who want a more customized operating system. They are used by people who want full control of their virtual machine. They are used by people who don’t trust public boxes built by some anonymous person without any details of the installation process.

Having contributed code to Veewee, I want to continue supporting its development, and I love that it’s written in Ruby, a simple language for which many developers are available for hire in Japan. I can’t say the same for Go Lang just yet.

The main problem I’ve noticed, as did EVERYONE who’s used Veewee or Packer for the first time, is that it’s SO SLOW!

Unless you have a big powerful computer, and a solid idea of what you’re trying to do, you’ll likely spend at least a few hours and probably a few days messing with these tools to get the “perfect virtual machine” setup. Not including the time it takes to install all the dependencies.

What about updates? Do you repeat the process manually in 2 weeks when there’s a security update? Do you remember how to do it? Or will you spend another 2 or 3 days trying to figure it all out? How can you make it faster? What if you want to install a very customized virtual machine 50 times a day? Are you able to do that? Can you generate a perfect Vagrant box from your virtual machine? an OVA with the proper OVF and additional metadata? Does your virtual machine run on other platforms such as VMware, VirtualBox, Hyper-V, Xen, KVM? Do you even have terabytes of disk space for storing so many ISOs and virtual machine images?

Of course, these might seem like extreme use-cases, but I know some people actually have this problem.

That’s where we come in.

Jidoteki

Before Jidoteki, we had those problems listed above. Instead of waiting thirty minutes for each virtual machine installation, we got the most ridiculously high spec servers to do it for us. THREE MINUTES. That’s how fast we can install a fully customized operating system from scratch.

We’re not even joking.

So naturally, after solving the speed issue, we attacked all the other issues around using public Vagrant boxes, supporting multiple hypervisors, and creating boxes in different formats.

Not only that, but we also realized that companies can use Jidoteki to make more money. We want you to be more profitable. We will help you scale your business’s sales automatically. If you use Jidoteki to build your virtual machines, you’re not only saving a ton of time, but you’re creating a new channel to sell your software or web service. You can use us to launch 50 installations per day, each customized for your customers, or each having different updates or packages or whatever you can think of.

If you have any questions, we’re often available in the #Jidoteki chat room on FreeNode IRC, as well as twitter @Jidoteki.