See also:

A Juju bundle is a collection of charms. If a charm is a part of a Juju model, representing a single application, a charm bundle represents an entire Juju model, that is, a collection of interconnected applications.

Charm bundles are designed to help administrators deploy large, complex systems in an easy, repeatable way. At the same time, from a technical point of view, just like a charm, a charm bundle is fundamentally still just a YAML file. This file contains details of the charms, relationships, and configuration to deploy.


In-line metadata in bundle.yaml

It’s useful for charm authors to be able to point someone using a bundle to further information on that bundle. Currently it is possible to do that via in-line metadata in bundle.yaml. An example is provided below. Note that these are all optional fields. However, they are important, as Charmhub will use them to populate the corresponding fields in the store, which will help other users engage with your project better.

# (Optional) A string (or a list of strings) containing a link (or links) to project websites.
# In general this is likely to be the upstream project website, or the formal website for the
# charmed bundle.
website: <url> | [<urls>]

# (Optional) A string (or a list of strings) containing a link (or links) to the bundle source code.
source: <url> | [<urls>]

# (Optional) A string (or a list of strings) containing a link (or links) to the bundle bug tracker.
issues: <url> | [<urls>]

# (Optional) A link to a documentation cover page on Discourse
# More details at https://juju.is/docs/sdk/charm-documentation
docs: <url>

Overlay bundle

An overlay bundle is just a bundle. That is, it has the same YAML syntax as base bundles. Its purpose is to provide you with the ability to customise settings in an upstream bundle for your own needs, without modifying the existing bundle directly. For example, you may wish to add extra applications, set custom machine constraints or modify the number of units being deployed. They are especially useful for keeping configuration local, while being able to make use of public bundles.

Last updated 4 months ago.