Juju component cross-version compatibility

Commonly, you may have to work with multiple versions of Juju at once. This document describes the compatibility rules between different versions of Juju.

juju CLI, controllers, and {ref}`agents

Juju controllers, agents, and the juju CLI client all are semantically versioned. This means:

  • Controllers/agents/clients in the same major/minor series (e.g. 3.5.0 and 3.5.2) are fully compatible.

  • Controllers/agents/clients in the same major series (e.g. 3.4 and 3.5) are compatible, but older versions may be lacking features present in newer versions.

  • Controllers/agents/clients with different major versions (e.g. 2.8 and 3.1) are not guaranteed to be compatible. The one exception is that we guarantee a basic set of operations (e.g. status and migration) is compatible between the last minor in a major series and the next major. This enables users to upgrade their existing deployments to the next major version. Related to that: A Juju client only bootstraps a Juju controller of the same major/minor version.

python-libjuju

  • For a 2.9.x controller, you should use the latest python-libjuju in the 2.9 track.

  • For 3.x controllers, you should use the latest version of python-libjuju.

terraform-provider-juju

The latest version of the Terraform Juju provider should be compatible with all Juju controllers.