What's the difference between Juju and Puppet/Chef?

Solution 1:

Mark, this is a great question, and was the first one I asked when somebody told me about Juju. Here's some of the big differences.

  • Juju encapsulates services - a charm defines all the ways the service needs to expose or consume config data to/from other services. How a charm does that is the charm's business. It can use any tool from shell scripts to Chef in solo mode, to do that.

  • Juju orchestrates provisioning - juju keeps track of the resources it has available to it, and can add or remove them as needed. Currently these resources are AWS EC2 machines, OpenStack clouds (like HP Cloud), Microsoft Azure, Joyent, bare metal machines via MAAS, and an LXC/KVM local provider.

  • Juju makes sharing easy - anyone can contribute a charm to the Juju Charm Store; these charms are vetted and peer reviewed by the Juju community.

Here are some other comparisons people have made from across the web:

  • https://web.archive.org/web/20140404014848/https://community.csc.com/community/cio-engage/blog/2013/08/25/beyond-chef-and-puppet-ubuntu-juju
  • How does Juju "co-exist" with Chef, taking the automation process "one step further"?

Solution 2:

(Disclaimer - I'm the founder of Puppet and CEO of Puppet Labs)

I don't know juju terribly well, but from what I can tell, they somewhat sit at different layers. Puppet is great at managing the behaviors and capabilities of machines themselves, whereas juju seems primarily dedicated to talking about sets of machines and largely punts how to make the machines behave any specific way to external tools like Puppet or shell scripts.

Our strategy with Puppet is to build the best stack from the ground up, whereas juju appears to be a specific layer of the stack and leaving other layers to other tools. Thus, while you can solve the whole problem with Puppet (albeit sometimes with a bit more work than you might like), you'll need to integrate juju with other tools to get much done.

Really, juju seems like an on-premise version of CloudFormation from Amazon, albeit without the graph and such. So, usable with Puppet etc., but not a replacement for it.