Using Microsoft Azure with Juju

Juju already has knowledge of the Azure cloud, which means adding your Azure account to Juju is quick and easy.

You can see more specific information on Juju's Azure support (e.g. the supported regions) by running:

juju show-cloud azure

If at any point you believe Juju's information is out of date (e.g. Azure just announced support for a new region), you can update Juju's public cloud data by running:

juju update-clouds

Adding credentials

The Cloud credentials page offers a full treatment of credential management.

Several steps are required to add Azure credentials to Juju:

  • Install the CLI tool
  • Log in to Azure
  • Import the credentials

Note: Credentials on the Azure cloud have been reported to expire. If a previously working setup suddenly behaves as if incorrect credentials are being used then you may need to update the credentials on the controller. See Updating remote credentials for guidance.

Installing the CLI tool

You will need to import your Azure credentials into Juju using the Azure CLI 2.0 tool from Microsoft.

Ubuntu/Linux users can install Azure CLI 2.0 with the following command:

curl -L | bash

Note: For instructions that cover installing Azure CLI on Microsoft Windows and Apple macOS, see Microsoft's Install Azure CLI 2.0 documentation.

If the installer encounters any difficulties it will let you know. Examples include the inability to find your system's Python interpreter or missing software dependencies. Run any commands that the installer suggests in order to rectify these deficiencies. You may need to prepend sudo to some commands (only do this if needed). After each command, rerun the above curl command. Accept the suggested default answers to any questions it may ask (by just pressing 'Enter'). At the end you will be asked to run exec -l $SHELL to restart your shell.

Verify that the tool is properly installed by running az --version.

Logging in to Azure

Log in to your Azure account in order to display the credentials that you will, in turn, provide to Juju:

az login

This will output a URL and a code, for example:

To sign in, use a web browser to open the page and enter the code D6FRLOY6U to authenticate.

After entering the code the web site should show 'Microsoft Azure Cross-platform Command Line Interface'. Press the 'Continue' button.

The resulting page will ask you to "Pick an account". This is just the email address that you've associated with your Azure account. Click on it.

You are now logged in to your Azure account.

Importing the credentials

Back on the command line, the output from az login should now display your Azure account information:

    "cloudName": "AzureCloud",
    "id": "f717c8c1-8e5e-4d38-be7f-ed1e1c879e18",
    "isDefault": true,
    "name": "Pay-As-You-Go",
    "state": "Enabled",
    "tenantId": "0fb95fd9-f42f-4c78-94c9-e3d01c2bc5af",
    "user": {
      "name": "",
      "type": "user"

Now initiate the process to import your Azure credentials into Juju:

juju add-credential azure

You will first be asked for an arbitrary credential name (e.g. 'ubuntu'). Secondly, you will be asked to select an 'Auth Type' from among the following two methods:

  • interactive
  • service-principal-secret

The default choice is interactive and it is the recommended method. It is far quicker and easier than the manual service-principal-secret method. Here, we'll assume that 'interactive' has been chosen.

Note: For guidance on the manual method, see Manually adding Azure credentials. Use this method if the interactive option fails, or if you want to automate the configuration process.

You then will be asked for your subscription id. In the example above, it is 'f717c8c1-8e5e-4d38-be7f-ed1e1c879e18'. The recommended way is to simply press 'Enter' and let the tool automatically retrieve what's needed. If you do so, after a few seconds you will see the following (assuming 'ubuntu' is the credential name):

Credential "ubuntu" added locally for cloud "azure".

You can also verify that the credentials were successfully added by running juju credentials.

Creating a controller

You are now ready to create a Juju controller for cloud 'azure':

juju bootstrap azure azure-controller

Above, the name given to the new controller is 'azure-controller'. Azure will provision an instance to run the controller on.

This will result in the controller environment being visible in the Azure portal.

Juju environment in Azure portal

For a detailed explanation and examples of the bootstrap command see the Creating a controller page.

Azure specific features

Juju supports Azure availability sets. See the Application high availability page for more details.

Note: Azure accounts are initially limited to 10 cores (trial accounts can be even lower). You will need to file a support ticket with Azure to raise your quota limit.

Next steps

A controller is created with two models - the 'controller' model, which should be reserved for Juju's internal operations, and a model named 'default', which can be used for deploying user workloads.

See these pages for ideas on what to do next:

© 2018 Canonical Ltd. Ubuntu and Canonical are registered trademarks of Canonical Ltd.