Troubleshooting clouds

Common issues setting up clouds

juju add-credential

The juju add-credential command supports adding a credential with a YAML file.

The YAML input format is identical to the format Juju uses to store credentials on a user's filesystem. However, the manually created file can only be used to add one credential at a time, unlike the file generated by Juju which can contain multiple credentials.

The format must also include a root key of "credentials:".

For example, the following 'azure.yaml' file will fail.

azure:
  rickscreds:
      auth-type: service-principal-secret
      application-id: 1234
      application-password: secretpassword
      subscription-id: 12345

Once the root key is added, it will succeed:

credentials:
    azure:
      rickstuff:
          auth-type: service-principal-secret
          ...

Upgrading controllers and models

Controllers and their hosted models need to be upgraded whenever Juju is updated, see Upgrading Juju software for more details.

But as large model deployments can obviously be complex, you may occasionally experience problems during an upgrade. These problems can often be mitigated by restarting the jujud- agents running on the machines within your models.

The following Bash script, for example, connects to each machine in your model and restarts each agent:

for i in {0..NUMBER_OF_MACHINES}; do
  juju ssh $i "for app in \$(ls /var/lib/juju/tools); do
    sudo systemctl restart jujud-\$app;
  done";
done

For the above example to work, you will need to replace NUMBER_OF_MACHINES with the maximum machine value from juju status, and those machines will also need to be running systemd, rather than running within local LXD containers.