Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am administrator who helps to deploy cloud services to an organisation. Is it possible to use Juju to deploy services based on user requests.

Kindly answer my following doubts.

  1. Users use a web interface to request for a service. Is it possible to deploy the services automatically using JUJU?

  2. Based on the user requests we can deploy services using JUJU. After the deployment we want to allocate the Virtual machine and service to the requested user. How to create a user name and password to the deployed Virtual machine/ Service ?

  3. Which is the best programming language which supports JUJU API ?

  4. We are planning to create a hybrid service deployment using JUJU. Using web interface users can select which public cloud they want to use to deploy the services. How to deploy a particular cloud service to specific public cloud service provider ??

Kindly help to solve my queries.

share|improve this question

Juju GUI (source: lp:juju-gui; live demo) allows you to deploy services in a Juju environment through a web browser. It's a free software with AGPL v3 license, so you can probably fork it and modify it as needed, if it doesn't quite fit your needs. To use it, you'll need to deploy it in your environment and expose it. See the deployment instructions.

If that is not suitable for your purpose, you can use the Juju websocket and HTTPS-based API directly (that's what the GUI does from JavaScript). The documentation about that is not quite polished and it's most autogenerated from the Go sources. There is some concise developer documentation in juju-core source.

Yet another choice for automated/scripted (not web-based) deployments with Juju is the Python-based Juju Deployer.

The concept of role-based permissions and multiple user accounts is not yet supported by Juju, but it's planed. So, Juju can't directly help with user account management for your customers, except perhaps if you write custom charms that provide that.

Juju API works over a websocket with JSON-encoded requests/responses. It's designed to be language-independent. There are presently clients for it in Go, JavaScript and Python, but alas not as standalone libraries, but as parts of other products (juju-core, GUI and Deployer, respectively).

Lastly, each Juju environment is specific to a single cloud provider. So in order to choose where to deploy a service, you'll need to generate the configuration for the chosen public cloud in environments.yaml, then bootstrap it (per customer), and finally deploy the service(s). An interesting idea is the manual provisioning, which allow you to add any existing machine to an environment, as long as you can connect to it using SSH and the machine can connect back to the state server node (and the other machines as well, if you'll be adding relations to it).

So you see, even though Juju can help you with the deployments and orchestration, a fair amount of "glue" has to be custom-built around it to enable such type of hosted solution you're aiming to provide to end-users.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.