See also: How to manage charms or bundles

See more: SDK | Bundle

In Juju, a bundle is a collection of charms which have been carefully combined and configured in order to automate a multi-charm solution.

For example, a bundle may include the wordpress charm, the mysql charm, and the relation between them.

The operations are transparent to Juju and so the deployment can continue to be managed by Juju as if everything was performed manually (what you see in juju status is applications, relations, etc.; that is, not the bundle entity, but its contents).

Bundles can be of two kinds, regular and overlay.

  • An overlay bundle is a local bundle you pass to juju deploy <charm/bundle> via --overlay <overlay bundle name>.yaml if you want to customise an upstream charm / bundle (usually the latter, also known as a base bundle) for your own needs without modifying the existing charm / 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. It is also necessary in cases where certain bundle properties (e.g. offers, exposed endpoints) are deployment specific and can only be provided by the bundle’s user.
  • A regular bundle is any bundle that is not an overlay.
1 Like

i learned today about include-file:// and include-base64://but i didn’t exactly know under what circumstances i can use them in the bundle.yaml.

Are they only allowed as a values of config key or can they be anywhere? Where’s the reference manual for how these magic-key values are supposed to be used?

this blog did give me some hints to some of my questions

I don’t know about a reference manual but these two methods can be used to include application configuration options (‘config’) or to contain binary data for a specific application configuration option (charm-specific) like ‘cert’. There is a simple example on the Charm bundles page.