Extensions¶
Extensions initialize your project with YAML and Ops catered to supported web frameworks. They each have a corresponding profiles that you use when initializing your project.
12-factor extension behavior by base¶
The Ubuntu base selects the contract that a 12-factor framework extension generates.
There is no version key in charmcraft.yaml.
Ubuntu 22.04 LTS and Ubuntu 24.04 LTS generate the established contract, where the framework supports the base.
Ubuntu 26.04 LTS generates an experimental contract. It requires
CHARMCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS=1when Charmcraft expands or packs the project.
The Spring Boot extension is also experimental on Ubuntu 24.04 LTS in both Charmcraft and Rockcraft. The Spring Boot tutorial shows the required settings. Other Charmcraft framework extensions don’t require the environment variable on lower bases.
On Ubuntu 26.04 LTS, all six framework extensions generate the following contract:
Generated field |
Ubuntu 22.04 LTS and 24.04 LTS |
Ubuntu 26.04 LTS |
|---|---|---|
Charm part plugin |
|
|
Workload container |
Framework-dependent |
|
Workload resource |
Framework-dependent |
|
Peer relation |
|
|
Secret options |
A string secret key and a separate secret-ID option |
One |
Optional build input |
None |
|
OAuth, OpenFGA, and tracing libraries |
Libraries fetched from Charmhub |
PyPI interface packages provided transitively by |
Cache relations |
Redis and Valkey |
Valkey |
Charmcraft stages paas-config.yaml only when the file exists in an Ubuntu 26.04 LTS
project.