Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Are they both solving the same problem? Or are they for two different sets of problems? If so for what i it better to use vagrant, and for what better to use juju?

share|improve this question
up vote 19 down vote accepted

quick version:

vagrant is a tool for working with virtualbox instances. This is typically used during development (on a mac) to test-deploy your app into virtual machines that look more like your eventual production (i.e., linux) environment. It's got a customizable (ruby) stack of handlers to create such a virtual environment any way you'd like. Vagrant is a powerful tool to programmatically manage virtual environments and provides for all sorts of "local" variations of continuous-integration-style development techniques. It's most often used to run Ubuntu VMs on a Mac, but will run on various platforms and deploy various target operating systems. Afaik, it only works with virtualbox as an underlying "provider".

juju is a tool to orchestrate services using various different underlying providers: ec2 clouds, openstack clouds, lxc VMs, and MaaS servers. It shares a "local development" story (using lxc containers instead of virtualbox VMs) with vagrant, but that's really the only overlap. In fact, I'd like to see a vagrant provider written for juju so juju can drive virtualbox containers on a local environment with the same ease that it drives cloud and lxc images. That'd be a great fit! Also, juju really derives a lot of its value from the set of charms/services that can be spun up straight out-of-the-box, whereas vagrant's essentially a lower-level local container provider.

In fact we provide a Vagrant box with Juju so that users can test the local provider from within a VM:

Note that there have been efforts to "unify" deployment scripts around vagrant so that the same scripts can be used to deploy to cloud instances as well as vagrant boxes. These appear to be mostly one-off asides from vagrant proper, and frankly just highlight the need for a tool like juju.

share|improve this answer

Re "unifying deployment scripts around vagrant", Vagrant has excellent integration with Puppet and Chef, which can be used to automation system configuration across environments, from Vagrant boxes to local hardware to clouds. In fact many people use Vagrant to test their Puppet/Chef scripts before using them in production.

It would certainly be nice to add Juju to the list of automation tools that work with Vagrant.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.