We are working to deliver support for multi-cloud controllers. It’s on ongoing effort, and will take time to get the user experience polished. But multi-cloud controllers will be a thing. You can for example bootstrap to MAAS, deploy openstack, add that openstack cloud to the same existing controller, and deploy stuff to that second cloud. All without having to waste a controller node in the openstack cloud.
Part of that effort is to fix the experience around how the various Juju CLI cloud commands operate. We’re also working to fix credential management (especially adding or updating credentials on a controller). But for now, the cloud command changes and multi-cloud controller early access will be available soon in the 2.6 beta1 edge snap.
The key change is that like most/all other Juju commands, the cloud commands will operate (by default) on a running controller. So, just like
add-model, these commands:
will use the current controller, or accept a -c or --controller argument to use a different one.
For the times where you may be preparing to bootstrap to a new cloud, and you want to first create the cloud definition locally, you can use the
juju add-cloud -f myclouds.yaml mycloud --local
Currently , interactive add-cloud is always local.
One possible optimisation concerns the case where Juju has been installed for the first time. You want to bootstrap and need to see what clouds are available. You now need to run:
juju clouds --local
It could be that the
juju clouds command becomes smart and if there’s no controllers available, just shows the list of clouds available for bootstrap. The messaging would be improved to reflect this, eg
$ juju clouds
There are no controllers running. You can bootstrap a new controller using one of these clouds:
Cloud Regions Default Type Description
aws 15 us-east-1 ec2 Amazon Web Services
aws-china 2 cn-north-1 ec2 Amazon China
aws-gov 1 us-gov-west-1 ec2 Amazon (USA Government)
azure 27 centralus azure Microsoft Azure
azure-china 2 chinaeast azure Microsoft Azure China
cloudsigma 12 dub cloudsigma CloudSigma Cloud
google 18 us-east1 gce Google Cloud Platform
joyent 6 us-east-1 joyent Joyent Cloud
oracle 4 us-phoenix-1 oci Oracle Cloud Infrastructure
oracle-classic 5 uscom-central-1 oracle Oracle Cloud Infrastructure Classic
rackspace 6 dfw rackspace Rackspace Cloud
localhost 1 localhost lxd LXD Container Hypervisor
There’s an argument this could be confusing, ie list-clouds behaves differently if there’s a controller running or not. But with the appropriate messaging it could give the best of both worlds.
There’s time to tweak things prior to the 2.6 release depending on feedback, good or bad.