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.