Introduced to Juju 2.6.1, clouds can now be added to an existing controller using juju add-cloud. This gives rise to the “multi-cloud controller”.
Multi-cloud controllers are intended for cases where a clouds are stacked on top of one another. For example, when an OpenStack is deployed on top of MAAS or perhaps a LXD cluster is deployed on top of OpenStack.
The syntax of the most relevant options is:
juju add-cloud [--c=<controller>] [--force] [<cloud-name> <cloud-definition>]
When invoked without arguments, add-cloud begins an interactive session to help you provide details to Juju about your new cloud.
The -c (also --controller) option provides you with the ability to upload your cloud’s definition to a controller that you’re not currently connected to.
When adding a cloud to a controller, you may encounter an error asking you to use --force. This is a warning that Juju cannot guarantee high connectivity between the cloud and the controller.
Supported combinations are:
- LXD controllers support LXD, MAAS and OpenStack clouds
- MAAS controllers support MAAS and OpenStack clouds
- OpenStack controllers supports OpenStack clouds
When using --force, you must consider network routability and other considerations. With the manual provider, for example, any collection of SSH-accessible machines can become a private cloud. Juju is unable to assume high-reliability.
To add Kubernetes clusters to your controller, use the add-k8s command.
