Juju OLM Documentation

The Charmed Operator Lifecycle Manager (OLM) is a platform for orchestrating applications—prepackaged in a special format called Charmed Operators (‘charms’)—on any cloud. It is a component of the Charmed Operator Framework Juju and it consists of the command line tool Juju (juju).

The OLM provides a declarative way to install, provision, maintain, update, upgrade, and connect applications on and across Kubernetes clusters, containers, virtual machines, and bare metal machines, on public or private cloud.

As such, the OLM makes it simple, intuitive, and efficient to manage the full lifecycle of complex applications in hybrid cloud.

For system operators and DevOps who manage applications in the cloud, Juju’s OLM simplifies code; for CIOs, it helps align code with business decisions.

For a collection of existing charms, see Charmhub. To build your own charm, see the Charmed Operator Software Development Kit (SDK).

In this documentation

Get started - a hands-on introduction to the Juju OLM for new users
How-to guides
Step-by-step guides covering key operations and common tasks
Discussion and clarification of key topics
Technical information - specifications, APIs, architecture

Project and community

The Juju OLM is an open source project that warmly welcomes community projects, contributions, suggestions, fixes and constructive feedback.


Level Path Navlink
1 Juju OLM documentation
1 tutorials Tutorial
2 get-started-with-juju Get started with Juju
1 how-to How-to guides
2 manage-the-client Manage juju
3 installing-juju Install juju
3 use-the-client Use juju
3 back-up-the-juju-client Back up juju
3 upgrade-the-juju-client Upgrade juju
3 configure-juju-for-offline-usage Configure Juju for offline usage
2 manage-the-juju-dashboard Manage the dashboard
3 accessing-the-dashboard Access the dashboard
3 upgrade-the-dashboard Upgrade the dashboard
2 manage-clouds Manage clouds
3 adding-clouds Add a cloud
3 view-the-available-clouds View the available clouds
3 view-the-available-cloud-regions View the available cloud regions
3 change-the-default-region-for-a-cloud Change the default region for a cloud
3 view-detailed-information-about-a-cloud View detailed information about a cloud
3 update-the-definition-of-a-cloud Update the definition of a cloud
3 define-instance-tags Define instance tags in a cloud
3 troubleshoot-clouds Troubleshoot a cloud
3 remove-a-cloud Remove a cloud
2 manage-credentials Manage credentials
3 add-credentials Add a cloud credential to the Juju client
3 list-credentials List credentials
3 set-the-default-credential-for-a-cloud Set the default credential for a cloud
3 relate-a-credential-to-a-model Relate a credential to a model
3 query-a-credential-related-to-a-model Query a credential related to a model
3 update-a-credential Update a credential
3 remove-a-credential Remove a credential
2 manage-controllers Manage controllers
3 create-a-controller Create a controller
3 configure-a-controller Configure a controller
3 set-constraints-for-a-controller Set constraints for a controller
3 log-in-to-a-controller Log in to a controller
3 controller-backups Back up a controller
3 restore-a-controller-from-a-backup Restore a controller from a backup
3 high-availability-juju-controller Make a controller highly available
3 remove-a-controller Remove a controller
3 collecting-juju-metrics Collect metrics about a controller
3 remove-a-user-from-a-controller Remove a user from a controller
2 manage-models Manage models
3 add-a-model Add a model
3 get-information-about-a-model Get information about a model
3 configure-a-model Configure a model
3 set-constraints-for-a-model Set constraints for a model
3 switch-to-a-different-model Switch to a different model
3 migrate-a-model Migrate a model
3 upgrade-models Upgrade a model
3 troubleshoot-model-upgrades Troubleshoot model upgrades
3 remove-a-model Remove a model
3 disabling-commands Disable commands
2 manage-applications Manage applications
3 deploy-a-charm-from-charmhub Deploy an application from Charmhub
3 deploy-an-application-from-a-local-charm Deploy an application from your local filesystem
3 deploy-to-a-lxd-container Deploy to a LXD container
3 deploy-an-application-with-a-specific-series Deploy an application with a specific series
3 deploy-to-a-specific-machine Deploy to a specific machine
3 deploy-to-a-specific-availability-zone Deploy to a specific availability zone
3 deploy-to-a-network-space Deploy to a network space
3 trust-an-application-with-a-credential Trust an application with a credential
3 expose-a-deployed-application Expose a deployed application
3 configure-an-application Configure an application
3 control-application-network-ingress Control application network ingress
3 set-constraints-for-an-application Set constraints for an application
3 upgrade-applications Upgrade an application
3 use-lxd-profiles Tailor your application for a LXD cloud
3 debug-charm-hooks Debug charm hooks
3 scale-an-application Scale an application
3 remove-an-application Remove an application
3 working-with-actions Work with actions
2 manage-machines Manage machines
3 accessing-individual-machines-with-ssh Access individual machines with SSH
3 set-constraints-for-a-machine Set constraints for a machine
3 upgrade-a-machines-series Upgrade a machine’s series
3 remove-a-machine Remove a machine
2 manage-units Manage units
3 remove-a-unit Remove a unit
2 manage-storage Manage storage
3 defining-and-using-persistent-storage Define and use persistent storage
3 remove-storage Remove storage
2 manage-relations Manage relations
3 manage-same-model-relations Same-model
3 manage-cross-model-relations Cross-model
2 manage-subnets Manage subnets
2 manage-spaces Manage spaces
2 manage-users Manage users
2 manage-plugins Manage plugins
2 additional-how-to-guides Other guides
3 cloud-image-metadata How to configure your OpenStack cloud image metadata
3 deploy-postgres-on-ubuntu-server Deploy, install and manage a high-availability PostgreSQL cluster on Ubuntu Server
3 deploy-rabbitmq-cluster-on-ubuntu-server Deploy and configure a multi-node RabbitMQ cluster on Ubuntu Server
3 get-started-charmed-kubernetes Get started with Charmed Kubernetes 1
3 using-gitlab-as-a-container-registry Using GitLab as a container registry for Kubernetes
3 streaming-hadoop-analysis Streaming Data Analytics with Apache Hadoop
3 charmed-kubernetes-kata-containers Ensuring security and isolation in Charmed Kubernetes with Kata Containers
3 get-started-hadoop-spark Get started with Hadoop Spark 2
3 kubeapps-on-canonical-kubernetes Install Kubeapps on your Kubernetes cluster
3 deploying-storageos-on-kubernetes Deploying StorageOS on Charmed Kubernetes
3 charmed-osm-get-started Getting started with Charmed OSM 1
3 monitor-elasticsearch-with-elasticsearch-and-kibana Set up remote Elasticsearch monitoring of an Elasticsearch cluster
3 lma-light Deploy the COS Lite observability stack on MicroK8s
1 reference Reference
2 action Action
2 agents Agent
3 controller-agent Controller agent
3 deployment-of-juju-agents Deployment of juju agents
2 applications Application
2 binding Binding
2 bootstrapping Bootstrapping
2 bundles Bundle
2 charmed-operators Charm(ed operator)
2 charmhub Charmhub
2 clouds Cloud
3 juju-supported-clouds List of supported clouds
2 configuration Configuration
3 list-of-controller-configuration-keys List of controller configuration keys
3 list-of-model-configuration-keys List of model configuration keys
2 constraints Constraint
2 controllers Controller
2 credentials Credential
2 endpoints Endpoint
2 high-availability High-availability
2 the-juju-client juju CLI client
3 commands juju CLI commands
3 environment-variables juju environment variables
2 the-juju-dashboard Juju dashboard
2 the-juju-web-cli juju web CLI
2 leaders Leader
2 juju-logs Logs
2 machines Machine
2 metric Metric
2 models Model
2 placement-directive Placement directive
2 plugins Plugin
3 list-of-known-plugins List of known plugins
2 relations Relation
3 cross-model-relation Cross-model relation
2 removing-things Removing things
2 network-spaces Space
2 storage Storage
3 storage-support Storage support
2 subnet Subnet
2 telemetry-and-juju Telemetry
2 units Unit
2 upgrading Upgrading things
2 user User
3 user-permissions User permissions
2 availability-zone Zone
2 fan-container-networking Fan container networking
2 offline-mode-strategies Offline mode strategies
2 status-values Status values
2 supported-features Supported features
1 explanation Explanation
2 application-modelling Application modelling
roadmap Roadmap & Releases
troubleshooting Gather information for troubleshooting
troubleshoot-additions Troubleshoot additions
troubleshoot-removals Troubleshoot removals
manage-constraints Manage constraints
working-offline Work offline
Related to LXD
manage-a-lxd-cloud LXD
use-lxd-clustering Use LXD clustering
use-the-localhost-cloud-offline Use the localhost cloud offline
Supported clouds
amazon-aws Amazon AWS
amazon-elastic-kubernetes-service-(amazon-eks) Amazon EKS
equinix-metal Equinix Metal
google-gce Google GCE
google-kubernetes-engine-(gke) Google GKE
lxd LXD
maas MAAS
manual-setup Manual setup
microk8s MicroK8s
azure Microsoft Azure
azure-kubernetes-service-(azure-aks) Microsoft AKS
openstack OpenStack
oracle Oracle
vmware-vsphere VMware vSphere
juju CLI commands
juju-actions actions
juju-add-cloud add-cloud
juju-add-credential add-credential
juju-add-k8s add-k8s
juju-add-machine add-machine
juju-add-model add-model
juju-add-relation add-relation
juju-add-space add-space
juju-add-ssh-key add-ssh-key
juju-add-storage add-storage
juju-add-subnet add-subnet
juju-add-unit add-unit
juju-add-user add-user
juju-agree agree
juju-agreements agreements
juju-attach attach
juju-attach-resource attach-resource
juju-attach-storage attach-storage
juju-autoload-credentials autoload-credentials
juju-bind bind
juju-bootstrap bootstrap
juju-budget budget
juju-cached-images cached-images
juju-cancel-action cancel-action
juju-cancel-task cancel-task
juju-change-user-password change-user-password
juju-charm charm
juju-charm-resources charm-resources
juju-clouds clouds
juju-collect-metrics collect-metrics
juju-config config
juju-consume consume
juju-controller-config controller-config
juju-controllers controllers
juju-create-backup create-backup
juju-create-storage-pool create-storage-pool
juju-create-wallet create-wallet
juju-credentials credentials
juju-dashboard dashboard
juju-debug-code debug-code
juju-debug-hook debug-hook
juju-debug-hooks debug-hooks
juju-debug-log debug-log
juju-default-credential default-credential
juju-default-region default-region
juju-deploy deploy
juju-destroy-controller destroy-controller
juju-destroy-model destroy-model
juju-detach-storage detach-storage
juju-diff-bundle diff-bundle
juju-disable-command disable-command
juju-disable-user disable-user
juju-disabled-commands disabled-commands
juju-download download
juju-download-backup download-backup
juju-enable-command enable-command
juju-enable-destroy-controller enable-destroy-controller
juju-enable-ha enable-ha
juju-enable-user enable-user
juju-exec exec
juju-export-bundle export-bundle
juju-expose expose
juju-find find
juju-find-offers find-offers
juju-firewall-rules firewall-rules
juju-get-constraints get-constraints
juju-get-model-constraints get-model-constraints
juju-grant grant
juju-grant-cloud grant-cloud
juju-gui gui
juju-help help
juju-help-tool help-tool
juju-hook-tool hook-tool
juju-hook-tools hook-tools
juju-import-filesystem import-filesystem
juju-import-ssh-key import-ssh-key
juju-info info
juju-kill-controller kill-controller
juju-list-actions list-actions
juju-list-agreements list-agreements
juju-list-cached-images list-cached-images
juju-list-charm-resources list-charm-resources
juju-list-clouds list-clouds
juju-list-controllers list-controllers
juju-list-credentials list-credentials
juju-list-disabled-commands list-disabled-commands
juju-list-firewall-rules list-firewall-rules
juju-list-machines list-machines
juju-list-models list-models
juju-list-offers list-offers
juju-list-payloads list-payloads
juju-list-plans list-plans
juju-list-regions list-regions
juju-list-resources list-resources
juju-list-spaces list-spaces
juju-list-ssh-keys list-ssh-keys
juju-list-storage list-storage
juju-list-storage-pools list-storage-pools
juju-list-subnets list-subnets
juju-list-users list-users
juju-list-wallets list-wallets
juju-login login
juju-logout logout
juju-machines machines
juju-metrics metrics
juju-migrate migrate
juju-model-config model-config
juju-model-default model-default
juju-model-defaults model-defaults
juju-models models
juju-move-to-space move-to-space
juju-offer offer
juju-offers offers
juju-payloads payloads
juju-plans plans
juju-refresh refresh
juju-regions regions
juju-register register
juju-relate relate
juju-reload-spaces reload-spaces
juju-remove-application remove-application
juju-remove-cached-images remove-cached-images
juju-remove-cloud remove-cloud
juju-remove-consumed-application remove-consumed-application
juju-remove-credential remove-credential
juju-remove-k8s remove-k8s
juju-remove-machine remove-machine
juju-remove-offer remove-offer
juju-remove-relation remove-relation
juju-remove-saas remove-saas
juju-remove-space remove-space
juju-remove-ssh-key remove-ssh-key
juju-remove-storage remove-storage
juju-remove-storage-pool remove-storage-pool
juju-remove-unit remove-unit
juju-remove-user remove-user
juju-rename-space rename-space
juju-resolve resolve
juju-resolved resolved
juju-resources resources
juju-resume-relation resume-relation
juju-retry-provisioning retry-provisioning
juju-revoke revoke
juju-revoke-cloud revoke-cloud
juju-run run
juju-run-action run-action
juju-scale-application scale-application
juju-scp scp
juju-set-constraints set-constraints
juju-set-credential set-credential
juju-set-default-credential set-default-credential
juju-set-default-region set-default-region
juju-set-firewall-rule set-firewall-rule
juju-set-meter-status set-meter-status
juju-set-model-constraints set-model-constraints
juju-set-plan set-plan
juju-set-series set-series
juju-set-wallet set-wallet
juju-show-action show-action
juju-show-action-output show-action-output
juju-show-action-status show-action-status
juju-show-application show-application
juju-show-cloud show-cloud
juju-show-controller show-controller
juju-show-credential show-credential
juju-show-credentials show-credentials
juju-show-machine show-machine
juju-show-model show-model
juju-show-offer show-offer
juju-show-space show-space
juju-show-status show-status
juju-show-status-log show-status-log
juju-show-storage show-storage
juju-show-units show-units
juju-show-user show-user
juju-show-wallet show-wallet
juju-sla sla
juju-spaces spaces
juju-ssh ssh
juju-ssh-keys ssh-keys
juju-status status
juju-storage storage
juju-storage-pools storage-pools
juju-subnets subnets
juju-suspend-relation suspend-relation
juju-switch switch
juju-sync-agent-binary sync-agent-binary
juju-sync-tools sync-tools
juju-trust trust
juju-unexpose unexpose
juju-unregister unregister
juju-update-cloud update-cloud
juju-update-credential update-credential
juju-update-credentials update-credentials
juju-update-k8s update-k8s
juju-update-public-clouds update-public-clouds
juju-update-storage-pool update-storage-pool
juju-upgrade-charm upgrade-charm
juju-upgrade-controller upgrade-controller
juju-upgrade-dashboard upgrade-dashboard
juju-upgrade-gui upgrade-gui
juju-upgrade-juju upgrade-juju
juju-upgrade-model upgrade-model
juju-upgrade-series upgrade-series
juju-users users
juju-version version
juju-wallets wallets
juju-whoami whoami
known juju plugins
juju-metadata juju-metadata
juju-stash juju-stash
juju-wait-for juju-wait-for
Controller configuration keys
audit-log-exclude-methods audit-log-exclude-methods
juju-ha-space juju-ha-space
juju-mgmt-space juju-mgmt-space
Model configuration keys
agent-version agent-version
apt-mirror apt-mirror
automatically-retry-hooks automatically-retry-hooks
cloudinit-userdata cloudinit-userdata
container-inherit-properties container-inherit-properties
disable-network-management disable-network-management
enable-os-refresh-update enable-os-refresh-update
enable-os-upgrade enable-os-upgrade
firewall-mode firewall-mode
image-stream image-stream
provisioner-harvest-mode provisioner-harvest-mode


Mapping table
Location Path
/docs/olm/manage-relations /docs/olm/relations
/docs/olm/manage-controllers /docs/olm/controllers
/docs/olm/manage-clouds /docs/olm/clouds
/docs/olm/manage-models /docs/olm/models
/docs/olm/the-juju-web-cli /docs/olm/using-the-juju-web-cli
/docs/olm/the-juju-dashboard /docs/olm/using-the-dashboard
/docs/olm/constraints /docs/olm/about-constraints
/docs/olm/user-types-and-abilities /docs/olm/about-user-types-and-abilities
/docs/olm/manage-the-client /docs/olm/upgrading-client
/docs/olm/migrate-a-model /docs/olm/migrating-models
/docs/olm/configure-a-model /docs/olm/configuring-models
/docs/olm/additional-how-to-guides /docs/olm/other-tutorials
/docs/sdk /t/charm-bundles/1058
/docs/sdk /t/juju-resources/1074
/docs/sdk /t/writing-a-kubernetes-v1-charm-updated/3976
/docs/sdk /t/charm-writing/1260
/docs/sdk /t/tools/1181
/docs/sdk /t/hook-tools/1163
/docs/sdk /t/charm-metadata/1043
/docs/sdk /t/bundle-reference/1158
/t/advanced-application-deployment /t/deploying-advanced-applications
http://discourse.charmhub.io/ /docs/olm/community-help
http://discourse.charmhub.io/ /docs/contact-us
http://discourse.charmhub.io/ /docs/olm/community-help
/docs/olm/accessing-the-dashboard /docs/olm/accessing-juju’s-web-interface
/docs/olm/basic-concepts /docs/olm/reference
/docs/olm/quick-reference /docs/olm/reference
/docs/olm/glossary /docs/olm/reference
/docs/olm/deploying-applications /docs/olm/manage-applications/
/t/5458 /t/1158
/docs/olm/get-started-on-a-localhost /docs/olm/get-started-with-juju
/docs/olm/get-started-on-kubernetes /docs/olm/get-started-with-juju
/docs/olm/add-a-relation /docs/olm/manage-same-model-relations
/docs/olm/remove-a-relation /docs/olm/manage-same-model-relations
/docs/olm/cross-model-relations /docs/olm/manage-cross-model-relations
/docs/olm/juju-update-clouds /docs/olm/juju-update-cloud
/docs/olm/working-with-multiple-users /docs/olm/manage-users
/docs/olm/applications-and-charmed-operators /docs/olm/applications
/docs/olm/deploy-charms-offline /docs/olm/manage-applications
/docs/olm/juju-sync-agent-binaries /docs/olm/juju-sync-agent-binary
/docs/olm/list-of-available-plugins /docs/olm/list-of-known-plugins
/docs/olm/plugins-wait-for /docs/olm/juju-wait-for
/docs/olm/configure-a-controller#heading–excluding-information-from-the-audit-log /docs/olm/audit-log-exclude-methods

Question for @anthonydillon, @nottrobin & @pmatulis - would changing the title of this post impact negatively downstream? If it’s being pinned globally, I believe it should be inviting. (Also, why is it being pinned globally?)

“Juju documentation” makes it hard to know whether it’s worth clicking on. If it’s changed to “Need help? Links to Juju’s documentation”.

The introduction should also be more welcoming, in my opinion. It reads to me as “you’ve come to the wrong place”:

Yes, you can happily change the title, that won’t have any impact on the system.

The thinking behind it being pinned is that it provides effectively the navigation table for the documentation system. But I don’t think it needs to be pinned globally, that seems like a mistake.

But I consider it very much your call whether it’s the right decision to pin it at all. You can happily unpin it, again without having any impact on the documentation system.

The content above the “Navigation” title is also currently not used by the docs site, so you can change it to whatever you like for the time being. However, in other documentation sets - docs.snapcraft.io and the soon-to-be created maas.io/docs, the content above the “Navigation” title in that topic forms the content of the docs homepage, so we might want to move this way in Juju too before too long.

Does that all make sense?

Thanks for the response Robin. I’ll pin this thread to the #docs category, rather than globally. That way it can still be useful as an index for people writing documentation.

1 Like

Heads up, the following pages under the Reference section are missing actual links:

  • Juju commands
  • Environment variables

FYI, I very much like this page pinned to the Docs category. Helps me a lot. :slight_smile:

This currently links to Getting started with Juju - the same target as “Getting started on traditional infrastructure” which is highly confusing until you notice it.

As a minimum it should probably link to Using Kubernetes with Juju and be moved lower (because that document references Getting started with Juju as a prerequisite)

Thanks for raising this @doismellburning. I will get this addressed very shortly :slight_smile:

Edit: updated

I found these 404 broken links:

That’s strange… I must have edited the index incorrectly. I will take a look now.

Edit: the problem was that I had edited the titles of those URLs. Discourse is not sensitive to these changes (it only cares about the post ID).

relate link is broken
(4. Relate applications:)
I believe it should point to Managing relations

1 Like