Juju Charm Updates for 13.04

Well it’s another cycle and another Ubuntu release and it’s another cycle’s worth of Charm Store improvements. Since the Charm Store doesn’t freeze we can continually improve the capabilites of the charms over time while users can stick to the stable userspace that 12.04 LTS provides.

If you’re new here and have no idea what Juju is then check out the video. And what are charms? Well charms are the services you deploy. If juju is apt-get for the cloud, then charms are the packages for those clouds.

Juju has one mission in life, and that’s getting your services not only deployed, but manage them over the course of their lifecycle. Our job is to take your code and get you up and running on AWS, HP Cloud, Azure, and OpenStack as easily as possible.

First the raw numbers

  • 133 peer-reviewed charms in the store
  • 288 charms in personal branches
  • 151 total contributors (82 Canonical, 57 non-Canonical, 12 Canonical Juju coredevs)

As far as raw Charm download numbers, these are currently unavailable to browse, however next week or so when the new GUI/website land users will not only be able to see the number of downloads per charm, but if the charm works on a given provider. More about that in a future blog post …

So what’s in the app store?

Rails, node.js, and Django

One term you might be hearing tossed around is “PaaS on my own terms”. The idea here is that people really like the workflow that you can get with Heroku and other PaaSes, but don’t want the added complexity. Just your app and your provider.

Here’s how it works… assuming your Rails app is “myapp”, let’s deploy your application with postgresql to show you the kind of workflow we provide. We provide generic “platform charms” that let you snag things right out of version control and deploy them. Assuming you have a myapp.yaml file describing your application:

  app_name: myapp
  repo_type: git
  repo_url: "https://github.com/mmm/testrails.git"

Now you’re to deploy on your cloud provider, this can be AWS, HP Cloud, your own OpenStack, or your local Ubuntu laptop:

juju bootstrap  
juju deploy --config ~/myapp.yaml rails myapp
juju deploy postgresql

relate them

juju add-relation postgresql myapp

open it up to the outside world

juju expose myapp

Find the myapp instance’s public URL from

juju status

Like all services that can connect to a reverse proxy, we’ve made it so that you can easily scale out your application horizontally via haproxy:

juju deploy haproxy
juju add-relation haproxy myapp
juju add-unit -n5 myapp
juju expose haproxy  # Change your DNS to point to this IP instead
juju unexpose myapp  # We’re behind haproxy now, no need to leave this open to the world. 

And this is just the rails example, we can do this for node.js and django, and I’m always keeping an eye out for Java-smart developers, so if you want to make this kind of workflow for your platform, let me know!

Databases and other infrastructure

Need master/slave with that Postgres? We’ve got it, you just need to fire it up with a few commands.

Any Ubuntu user can set up a master/slave Postgres setup this way. It’s nice, it’s like having Stuart Bishop and his roving band of IS Postgresql gurus setting up your Postgres config for you. And since we dogfood OpenStack and our charms everyday, it’ll work.

Need to set up replicasets in MongoDB? We’ve got that built into the MongoDB charm too.

Or sometimes you just need a blank LAMP stack or you can toss in some elasticsearch if you want it.

Come see us and tell us what you need

Come check us out at any one of these events in 2013 if you’re interested in learning more or join us at our next virtual Charm School.