We’ve been trying to get our Java developer story in order, as it’s one of the areas where users have been telling us they’d like to see made easier to manage. We brought Matthew Bruzek on board, who will be focusing on our Java framework stuff.

Here’s his first cut, and it’s a big one. We now finally have an all emcompassing Apache Tomcat Charm. This charm allows you to develop your app on top of it as a subordinate charm and be able to deploy it. As an example, let’s deploy OpenMRS.

juju deploy tomcat7
juju deploy openmrs
juju deploy mysql
juju add-relation openmrs mysql
juju add-relation openmrs tomcat7
juju expose tomcat7

The magic happens when you relate openmrs to tomcat7, that installs OpenMRS in Tomcat, and then you’re good to go.

The charm contains a ton of options for you to check out, including deploying to Tomcat6 if that’s how you roll.

Those of you looking for “just shove my war file out there” can check out Robert Ayre’s j2ee-deployer charm. Here’s a blog post on how to use it.

That one is not in the charm store yet, but we’ll get to it!

Some good news for monitoring SaaS Fans, ServerDensity is now in the Juju Charm Store. This means that the ServerDensity agent is now available to tack onto any deployed service in your environment. We call this kind of charm a subordinate, here’s how you’d use it.

Let’s deploy a MongoDB Cluster:

juju-quickstart bundle:mongodb/cluster

This is a 13 node cluster, let’s add some monitoring! First we’ll deploy serverdensity, and then the crucial step, relating serverdensity to the service:

juju deploy serverdensity
juju add-relation mongos serverdensity

Now let’s tell ServerDensity that we want it to monitor Mongo and we need an API key since it’s a service that needs a key:

juju set serverdensity agentkey="Keyfromyourserverdensitycontrolpanel"
juju set serverdensity mongodb-server="ip of mongos node"
juju set serverdensity mongodb-dbstats=true

Now, why do I need to give it the ip of mongo’s node? Well, as v1 of this charm we’re setting this manually, but what we could do in the future is take care of those settings as soon as the relationship is made instead of making the user set those config values. But hey, why nitpick, monitoring a MongoDB cluster with 5 commands isn’t a bad place to start!

There are a bunch of configuration options for you to play with for service monitoring with Apache, MySQL, and RabbitMQ. When used standalone the charm will just do machine monitoring for whatever you related it to.

“Rick, I want you to fire up an empty cloud deployment”, said no boss ever.

The various teams who make up “The Ubuntu Server Team” work on various bits. Some work to make OpenStack easy to deploy, some work on packaging, some work on building images for all the public clouds we support. All this is fine and dandy, but at the end of the day, our users deploy things on top of Ubuntu Server, and these workloads are really what it’s all about.

Over the past two years it’s been increasingly obvious to us that orchestrating workloads is becoming one of the most important things we can help users with. What’s the point of an easy to use OpenStack installer if people can’t plop Hadoop, or Cassandra, or their Rails app right on top easily?

One part of this solution is our work on Juju, which makes orchestration simple; we can just manage deployments at the service level while not caring (too much) about individial instances. Some people wanted and needed things to be even highter level. “Look, I’ve got a pile of machines over here, I need a MongoDB cluster” and you don’t have the time! Or more increasingly, you know how to do all these steps, but need a way to make it portable so everyone else in your organization can benefit from your hard work.

So today we announced Juju Bundles. Technically, they’re very simple, it’s a yaml file that describes charms and their relationships to other charms. It can contain machine constraints, or any of the parameters you’d ship in a charm. That means deploying large swaths of services are now one command.

juju quickstart bundle:~charmers/mongodb/cluster
juju quickstart bundle:~charmers/hadoop/cluster
juju quickstart bundle:~charmers/mediawiki/scalable

There’s a 13 node 3 shard MongoDB cluster, a 7 node starter Hadoop cluster, and a 5 node Mediwiki. All of them can be horizontally scaled out of the box. juju add-unit -n10 hadoop-slavecluster and go to town. Not Bad!

Getting Started

If you’re on Ubuntu Rick has the info in his blog post, you basically:

sudo add-apt-repository ppa:juju/stable
sudo apt-get update
sudo apt-get install juju-quickstart

Then run one of the commands I mentioned:

juju quickstart bundle:~charmers/mongodb/cluster

Juju will then walk you through setting up an environment. Pick one. AWS, Microsoft Windows Azure, Joyent, HP Cloud, or your own OpenStack or laptop via LXC, then fill out your creds:

Now get a cup of coffee, or watch the console for the magic, maybe read the README.

Now go put that bad boy to work.

Quickstart is not yet available for OSX or Windows (we’re working on it), but if you want to play with it we’ve made a Vagrant box available for you to play with.

The Future

Over the course of the next few weeks as we ramp up to 14.04 we’ll be doing a few things. We’ll be tightening up the URLs to be easier to remember, so something like juju quickstart bundle:mongodb/cluster. Obviously we’d love to see more bundles from the community being submitted.

Check out the documentation for more, and for a more technical description of how bundles work check out Rick’s blog post. We also made a tutorial video on how to make and share your own bundles.

It’s that time of the year where elections are needed for 2 available moderator positions on Ask Ubuntu.

Here are the list of nominees, if you have 150 rep on the site you can cast a vote.

The primary closes in 3 days, after which the election begins. Please take the time to read the statements from each of the candidates and cast a vote!

One of the more annoying things about setting up cloud tools is copying and pasting your auth keys and strings into config files. Some people set variables, other have config files.

One thing we wanted to do in Juju is to make sure that people can generate the proper configs for their clouds, and that can be problematic with people copying and pasting snippets around, so behold, juju quickstart.

When invoked with juju quickstart -i we offer you fields to fill in for whatever you are deploying on:

And here’s the fields for a provider:

And here’s my favorite part, when a field is wrong or missing, it tells you!

This should help making it easier to get up and running.

Right before the holidays Robie Basak filed a Main Inclusion Report for nginx in Ubuntu. What does this mean? This means that nginx will sit alongside Apache in 14.04 with full security updates over the life of the release.

This is excellent news for those of you using stacks that tend to use nginx; increasing our support of nginx has been something many Ubuntu Server users have been telling me they’d like to see and it’s good to see us make some progress in this area.

All this is possible due to Thomas Ward; who has been rocking nginx in Ubuntu for a while now. Without his tireless efforts this couldn’t have been possible! He’s also maintaining PPAs for stable and development releases of nginx for every Ubuntu release since 10.04. What an excellent contribution to the community!

On the Juju front we have some charms that allow you to dynamically swap between Apache and nginx. Over the course of the year we’d like to see more charms have an option to use nginx. If you are interested in working on that, let me know.

UPDATE: Note that the MIR has been filed, technically it is not in main yet, and it must go through that process, but we’re confident that there won’t be major issues in time for 14.04.

The following is a guest post from Lucio Martinez:

Yesterday the community of Ask Ubuntu has joined to all the Stack Exchange network celebrating the holidays in the the coolest way, by wearing hats!

Those that had been visiting the site one year ago were happy when they started to see a new bonus for doing cool stuff like editing, answering, etc. This year you get a bonus. Hats, and here I’m going to show you why they are so amazing:

Now you know perfectly why hats are great :)

The hats have their own page where you can see them all and also the action to unlock it. For instance, someone who won “The Stallman” for edit a community wiki post will get this:

So start editing, answering, upvoting, chating, reviewing and doing all those amazing things that you do every day to make this a great community!


After about ~7 months of prototyping our watercooler is here.

Introducing discourse.ubuntu.com:

Our new discussion site built on the modern 100% Free Software Discourse platform. Log in with your Ubuntu SSO and start the party!

Over the next week or so I’ll be detailing instructions for community members to integrate their blog comments with the platform, and we have a bunch of integration ideas between Discourse and summit.ubuntu.com , as well as other integration points with mailing lists and social networks.

We also have an entire section dedicated to Local Team categories, so if you’re looking to jump in with your local team, let me know.

One of the things I’ve heard about people managing services over the last year or so is that even though it’s useful to do things at the service level, sometimes even doing that can be time consuming or tedious.

For example if you want Discourse or Mediawiki then you need to know which databases those services need. Why not just steal what some other person has put together and deploy it all at once? Services by themselves are fun but I want an entire working thing out of the box!

Bundles are sets of services that are bundled together in one file that you can deploy. And we’re putting them in the Juju Charm Store so that you not only get to share individual services, but clumps of working deployments. It’s easy, you merely model your deployment in the Juju GUI, export, and then share the yaml file. Bundles also have their own page in the store, showing users what components are available, how to use it, and what they consist of.

The nice thing is that you can deploy the entire thing at once:

juju quickstart bundle:~gary/demo/2/instantBigDataNoSQL

This fires up a bootstrap node, add the Juju GUI to the environment and deploys this monster.

Here’s what it looks like from scratch.

sudo add-apt-repository ppa:juju/stable
sudo apt-get install juju-core juju-quickstart
sudo apt-get update

juju init -w

Then edit ~/.juju/environments.yaml with your cloud credentials. Then pick a bundle to deploy.

juju quickstart bundle:~makyo/mediawiki-scalable/5/mediawiki-scalable


juju quickstart bundle:~jorge/mediawiki-simple/3/mediawiki-simple


juju quickstart bundle:~jorge/discourse/5/discourse-simple

Bundles are in beta, so here’s the caveats. Doing the environments.yaml dance gets tedious, so we’re working on the quickstart command to prompt you for credentials for whatever cloud you want to use. We also realize that the URLs aren’t exactly ideal, but we’re working to make that simpler. Bundles don’t support –to right now either, so “run an entire Discourse install on one cheap node” is not quite there yet, but we’ll be there soon. The goal by 14.04 is just to have the one quickstart command do what you want without all the previous mumbojumbo.

jujucharms.com will continue to grow support for bundles, right now it’s mostly focused on charms, and while charms are great and an important building block we’ll be pushing bundles as a complete solution for a deployment. As far as submitting your bundles to the charm store, the process is slightly different than charms, we’ll be pushing updated documentation on how to do this over the next few days. In the meantime feel free to deploy these example ones.