Clearwater and Juju


Like our sister project, Calico, we on the Project Clearwater team have been using Juju for some of our orchestration needs. In this blog post, I’m going to talk about what Juju is, why it’s a good fit for IMS orchestration, and what we’ve done recently on our Juju charms.

Both the Calico blog linked to above and the main Juju site talk about what Juju is in detail, so I’m only going to summarise it briefly here. Put simply, Juju is an orchestration platform – a way to automatically and repeatably deploy and configure network services, whether that’s a simple WordPress blog (the usual Juju example) or a full, interconnected IMS core like Clearwater. (Juju has some specific terminology – “charms” are configuration describing a specific service, and a “bundle” is a group of related charms).

What’s different about Juju, compared to related tools like Chef or Puppet, is that instead of focusing on the details of deploying each node (what packages do I install, which config files do I write out), Juju is concerned with managing the relationships between nodes. Each node gets told when its “relations” join or depart the cluster, so that when a new Sprout node (for example) is added, all the Bono nodes learn about it and can start directing traffic to it.

The concept of “relations” works particularly well for Clearwater, because there are well-defined and well-known IMS interfaces between nodes. For example, our clearwater-bono charm exposes the IMS Mw interface for S-CSCFs to connect to, and the Gm interface for UEs. The fact that relationships are shown in the Juju GUI also means that your Clearwater deployment actually (kind of) looks like an IMS network diagram:


Because Juju works on the level above Chef and Puppet like this, it’s possible to use them together – in fact, the Juju FAQ encourages it. This is great for us – it means we can hook into our existing Chef scripts from our Juju charms, reuse all that battle-hardened code for installing the right packages and tweaking the right config files, and let Juju manage the deployment-wide picture and relationships.

In the past couple of sprints (Dune and East of Eden), we’ve been making some improvements to our charms: besides general tidying-up and bug-fixing, we’ve now tested against the latest Juju version (1.23), successfully deployed Clearwater with Juju on OpenStack Juno (we’d previously only used Amazon EC2), and added a clearwater-sipp charm for stress testing.

If you’d like to see a three-minute video of a Clearwater system being managed and scaled by Juju, there’s one on Youtube here.

If that whets your appetite, and you’d like to try this yourself, it’s pretty simple:

If you have problems or questions, you should check the Juju documentation for help with Juju, and the Clearwater troubleshooting guide and general documentation for Clearwater.

First published on

About the author


Rob is a software engineer on the Project Clearwater team. Outside of work, he likes doing more open-source software development, knitting, and playing video games.

Follow Rob on Twitter

Ubuntu cloud

Ubuntu offers all the training, software infrastructure, tools, services and support you need for your public and private clouds.

Newsletter signup

Select topics you’re
interested in

In submitting this form, I confirm that I have read and agree to Canonical’s Privacy Notice and Privacy Policy.

Related posts

Lessons learned from 100+ private cloud builds

Building a private cloud based on OpenStack has typically been a complex process with uncertain build costs based on time and materials requiring specialised...

Open Infrastructure Summit Shanghai 2019: the highlights

The Canonical team is getting back from the Open Infrastructure Summit Shanghai 2019 with a lot of excitement and a fresh view on the key projects from the...

Yahoo! Japan builds their IaaS environment with Canonical

Yahoo! Japan, originally formed as a joint venture between Yahoo! and SoftBank, is one of the most popular internet advertising, search engines and e-commerce...