Some hidden features of Juju


Here is a thread of features of Juju that don’t appear within many “checkout matrix” comparisions. Feel free to add anything that you think of!


Sophisticated upgrade path checking

Juju knows how to upgrade itself on the fly via upgrade-model and upgrade-controller. But it also knows that some upgrade paths are impossible. Hypothetically, 2.10.7 might be required to upgrade to 3.0.0. Juju prevents you from attempting to upgrade a version that would cause errors in production.

[example to come!]

Real-time introspection and reporting via juju status

Juju provides real-time monitoring capabilities via its web interface and the command line. To activate the web interface, first log into the command line and you’ll be provided the login details:

juju gui
GUI 2.14.0 for model "admin/default" is enabled at:
Your login credential is:
 username: admin
 password: d4181...

The command-line version is even simpler:

juju status

If you want to generate machine-readable output, juju status supports a --format flag

juju status --format=(summary|yaml|json|table)

juju debug-log --replay

Juju logs what it’s doing across all of your models. If you want to gain some real visibility about what’s happening, this can be tailored to provide you exactly what you want:

Inspecting API commands sent over the wire

juju debug-log -m controller --replay --include-module juju.apiserver

This can be dialed up to 11 by increasing the verbosity of the internal logging.

juju model-config -m controller logging-config="juju.apiserver=TRACE"

[more examples to come]