---
title: 'Juju: a robust cloud strategy built on choice'
description: 'Ubuntu is the reference platform for scale out computing.  Some manifestations
  of scale out computing include: edge of network workloads, dev/test environments,
  big data (Hadoop), and Cloud (OpenStack).  Not only do all these next-generation
  workloads run on top of Ubuntu but what’s truly amazing is you can deploy and orchestrate
  them wit […]'
url: https://canonical.com/blog/juju-a-robust-cloud-strategy-built-on-choice?format=md
---

1. [Blog](https://canonical.com/blog)
2. Article

---

[Canonical](https://canonical.com/blog/author/canonical "More about Canonical")

17 December 2013

# Juju: a robust cloud strategy built on choice

[Tutorial](https://canonical.com/blog/tag/tutorial)

---

Share the article

Ubuntu is the reference platform for scale out computing.  Some manifestations of scale out computing include: edge of network workloads, dev/test environments, big data (Hadoop), and Cloud (OpenStack).  Not only do all these next-generation workloads run on top of Ubuntu but what’s truly amazing is you can deploy and orchestrate them with just one tool – [Juju](https://juju.ubuntu.com)!

From the start Juju was designed around these key principles:

1. Allowing faster spin-up of new services
2. Re-use expertise across teams and community
3. Choice of Infrastructure-as-a-service (IAAS) and avoidance of lock-in
4. Migration between IAAS providers

For the purposes of this post, I’m going to focus on Juju features 3 and 4 because too often they are overlooked in a company’s Cloud strategy.  The proof comes directly from the field where we frequently hear, “We are worried about our reliance on <insert Cloud provider name here>,” “we need to reduce <insert technology> footprint in our data centers,” or “I need to be able to burst more easily.”   Just like any robust Cloud application needs to be platform agnostic and dynamic (e.g. scale, highly available, etc.), a company’s IAAS strategy needs to have the same flexibility and reliability.

By adopting a flexible IAAS strategy you not only avoid vendor lock-in, but you open yourself to other advantages.  For example, you can “Juju deploy” your software application where it’s most cost effective.  If Cloud service provider A increases their rates, you can move to Cloud service provider B.  Or ask both providers to bid for your workload.  Even better, you could bring your application back to your in-house hardware (why not use what you’ve already paid for) via OpenStack and burst to a Cloud service provider if needed.

Today, Juju deploys to LXC, bare-metal via [Metal-as-a-Service (MAAS)](https://maas.ubuntu.com/), OpenStack, and on a growing list of public clouds such as Amazon’s AWS, HP Cloud, Microsoft Azure, etc (see the full list [here](https://juju.ubuntu.com/docs/getting-started.html)).  The Juju community has added support for [Mac OSX and Windows](https://juju.ubuntu.com/docs/getting-started.html) clients as well.  Via the Juju GUI, the ability to design and deploy workloads to various IAAS has never been easier.

Here’s a quick example:

* From the [Juju GUI](https://jujucharms.com/) drag and drop services, aka Juju Charms, to create your tiered application and relations.  For example, mine looks like:

    Watch this [video](https://www.youtube.com/watch?feature=player_embedded&v=V2H3fat0K5w) if you’re not sure how to drag and drop Juju Charms into the Juju GUI.

* Export your tiered application by clicking on the up arrow at the top of the Juju GUI or press SHIFT+D and save the .yaml file to you computer.  The file name defaults to “export.yaml” but feel free to make it something more relevant as you’ll see why later.  In Juju terminology, this file is called a “[Juju bundle](https://juju.ubuntu.com/docs/charms-bundles.html)”.
* Assuming you’ve followed the Juju tutorial’s [Getting Started page](https://juju.ubuntu.com/docs/getting-started.html) and correctly configured Juju’s environments.yaml file for Cloud services you want, we bootstrap our Cloud environment

$juju bootstrap -e <your Cloud environment>

e.g.juju bootstrap -e ec2

* Install the juju-deployer package

$sudo apt-get install juju-deployer

* Deploy your Juju Bundle file from your system

$juju-deployer -c <your buddle file name>.yaml envExport

If you want to deploy to a different Cloud environment, just bootstrap that environment and deploy your Juju bundle:

$juju bootstrap -e <Cloud environment #2>

$juju-deployer -c <your buddle file name>.yaml envExport

That’s it!  It’s two simple commands to move between Cloud service providers or deploy to my private OpenStack cloud.  As a bonus, you can socialize your Juju bundle with colleagues and they can Juju deploy your bundle to the environment of their choice!  In my team, we keep a collection of Juju bundles in a shared folder so it helps to give bundles a meaningful name and/or bundle versions.

With respect to the Cloud, choice is power and Juju is the fastest way to get the most out of your tiered application.

Ameet Paranjape

Canonical Sales Engineer

[Get in touch

Interested in running Ubuntu in your organization?](https://ubuntu.com/about/contact-us/form)

## Sign up for our newsletter

Get the latest Canonical news and updates in your inbox.

Work email:

\*I agree to receive information about Canonical's
products and services.

By submitting this form, I confirm that I have read and agree to [Canonical's Privacy Policy](https://canonical.com/legal/dataprivacy).

Sign up

## Share on

---

## Related posts

[### DIY chiselled Ubuntu: crafting your own chiselled Ubuntu base image](https://canonical.com/blog/craft-custom-chiselled-ubuntu-distroless)

In a previous post, I explained how we made our Ubuntu image 15 times smaller by chiselling a specific slice of Ubuntu for .NET developers. In this blog, I will provide...

[Valentin Viennot](https://canonical.com/blog/author/valentinviennot)

10 January 2023

[### Open source cloud platform: meet OpenStack](https://canonical.com/blog/open-source-cloud-platform)

Are you looking for an open source cloud platform and you don’t know where to start? Are you getting lost in all the independent rankings and cloud platform comparison pages?...

[Tytus Kurek](https://canonical.com/blog/author/tkurek)

2 February 2022

[### Let’s build a snap together – a complex snapcraft.yaml walkthrough](https://canonical.com/blog/lets-build-a-snap-together-a-complex-snapcraft-yaml-walkthrough)

It has been a while since we talked about how to build snaps. In the past, we went through a number of detailed examples, focused on different programming languages and the use...

[Igor Ljubuncic](https://canonical.com/blog/author/igorljubuncic)

21 January 2022

[### Raspberry Pi GPIO support in Ubuntu](https://canonical.com/blog/raspberry-pi-gpio-support-in-ubuntu)

We are proud to announce that Ubuntu 21.04 includes support for the GPIO pins on the Raspberry Pi. This has been a long time coming. We know. With support for the camera...

[Rhys Davies](https://canonical.com/blog/author/rhys-davies)

25 May 2021
