Juju OLM Documentation

The Charmed Operator Lifecycle Manager (OLM) is a platform for orchestrating applications—prepackaged in a special format called Charmed Operators (‘charms’)—in the 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.

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
Concepts - 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
0 Juju OLM documentation
0 tutorials Tutorials
get-started-on-a-localhost   Get started on a localhost
get-started-on-kubernetes   Get started on Kubernetes
0 how-to How-to guides
set-up-the-juju-olm   Set up the Juju OLM
   Set up your test environment
create-an-ubuntu-virtual-machine-with-multipass     Create an Ubuntu virtual machine with Multipass
   Set up the OLM
installing-juju     Install the Juju client
set-up-your-cloud     Connect the Juju client to your cloud
microk8s      MicroK8s
azure-kubernetes-service-(azure-aks)      Microsoft AKS
google-kubernetes-engine-(gke)      Google GCE
amazon-elastic-kubernetes-service-(amazon-eks)      Amazon EKS
manage-a-lxd-cloud      LXD
lxd       Connect the Juju client to your LXD cloud
use-lxd-clustering       Use LXD clustering
use-the-localhost-cloud-offline       Use the localhost cloud offline
    Private cloud
openstack      OpenStack
vmware-vsphere      VMware vSphere
maas      MAAS
manual-setup      Manual setup
    Public cloud
amazon-aws      Amazon AWS
azure      Microsoft Azure
google-gce      Google GCE
oracle      Oracle
equinix-metal      Equinix Metal
install-snaps-offline     Install snaps offline
configure-juju-for-offline-usage     Configure Juju for offline usage
manage-the-client    Manage the Juju client
use-the-client     Use the client
back-up-the-juju-client     Back up the Juju client
upgrade-the-juju-client     Upgrade the Juju client
manage-the-juju-dashboard    Manage the Juju dashboard
accessing-the-dashboard     Access the dashboard
upgrade-the-dashboard     Upgrade the dashboard
manage-clouds    Manage clouds
adding-clouds     Add a cloud
remove-a-cloud     Remove a cloud
define-instance-tags     Define instance tags in a cloud
troubleshoot-clouds     Troubleshoot a cloud
manage-credentials    Manage credentials
add-credentials     Add a cloud credential to the Juju client
list-credentials     List credentials
set-the-default-credential-for-a-cloud     Set the default credential for a cloud
relate-a-credential-to-a-model     Relate a credential to a model
query-a-credential-related-to-a-model     Query a credential related to a model
update-a-credential     Update a credential
remove-a-credential     Remove a credential
manage-controllers    Manage controllers
create-a-controller     Create a controller
configure-a-controller     Configure a controller
set-constraints-for-a-controller     Set constraints for a controller
log-in-to-a-controller     Log in to a controller
controller-backups     Back up a controller
high-availability-juju-controller     Make a controller highly available
remove-a-controller     Remove a controller
collecting-juju-metrics     Collect metrics about a controller
remove-a-user-from-a-controller     Remove a user from a controller
manage-models    Manage models
add-a-model     Add a model
get-information-about-a-model     Get information about a model
configure-a-model     Configure a model
set-constraints-for-a-model     Set constraints for a model
switch-to-a-different-model     Switch to a different model
working-with-multiple-users     Share a model
migrate-a-model     Migrate a model
upgrade-models     Upgrade a model
troubleshoot-model-upgrades     Troubleshoot model upgrades
remove-a-model     Remove a model
disabling-commands     Disable commands
manage-applications    Manage applications
deploy-a-charm-from-charmhub     Deploy an application from Charmhub
deploy-an-application-from-a-local-charm     Deploy an application from your local filesystem
deploy-to-a-lxd-container     Deploy to a LXD container
deploy-an-application-with-a-specific-series     Deploy an application with a specific series
deploy-to-a-specific-machine     Deploy to a specific machine
deploy-to-a-specific-availability-zone     Deploy to a specific availability zone
deploy-to-a-network-space     Deploy to a network space
trust-an-application-with-a-credential     Trust an application with a credential
expose-a-deployed-application     Expose a deployed application
configure-an-application     Configure an application
control-application-network-ingress     Control application network ingress
set-constraints-for-an-application     Set constraints for an application
upgrade-applications     Upgrade an application
use-lxd-profiles     Tailor your application for a LXD cloud
deploy-charms-offline     Deploy an application offline
debug-charm-hooks     Debug charm hooks
scale-an-application     Scale an application
remove-an-application     Remove an application
working-with-actions     Work with actions
manage-machines    Manage machines
accessing-individual-machines-with-ssh     Access individual machines with SSH
set-constraints-for-a-machine     Set constraints for a machine
upgrade-a-machines-series     Upgrade a machine’s series
remove-a-machine     Remove a machine
manage-units    Manage units
remove-a-unit     Remove a unit
manage-storage    Manage storage
defining-and-using-persistent-storage     Define and use persistent storage
remove-storage     Remove storage
manage-relations    Manage relations
simple-same-model-relations     Simple (same-model) relations
add-a-relation      Add a simple relation
remove-a-relation      Remove a simple relation
cross-model-relations     Cross-model relations
create-an-offer      Create an offer
view-an-offers-details      View an offer’s details
control-access-to-an-offer      Control access to an offer
find-an-offer-to-use      Find an offer to use
relate-to-an-offer      Relate to an offer
allow-traffic-from-a-related-application      Allow traffic from a related application
inspect-relations-to-an-offer      Inspect relations to an offer
suspend-and-resume-a-relation      Suspend and resume a relation
remove-a-relation      Remove a relation
remove-an-offer      Remove an offer
troubleshooting     Gather information for troubleshooting
troubleshoot-additions     Troubleshoot additions
troubleshoot-removals     Troubleshoot removals
manage-constraints    Manage constraints
working-offline    Work offline
additional-how-to-guides  Additional how-to guides
cloud-image-metadata    How to configure your OpenStack cloud image metadata
deploy-postgres-on-ubuntu-server    Deploy, install and manage a high-availability PostgreSQL cluster on Ubuntu Server
deploy-rabbitmq-cluster-on-ubuntu-server    Deploy and configure a multi-node RabbitMQ cluster on Ubuntu Server
get-started-charmed-kubernetes    Get started with Charmed Kubernetes 1
using-gitlab-as-a-container-registry    Using GitLab as a container registry for Kubernetes
streaming-hadoop-analysis    Streaming Data Analytics with Apache Hadoop
charmed-kubernetes-kata-containers    Ensuring security and isolation in Charmed Kubernetes with Kata Containers
get-started-hadoop-spark    Get started with Hadoop Spark 2
kubeapps-on-canonical-kubernetes    Install Kubeapps on your Kubernetes cluster
deploying-storageos-on-kubernetes    Deploying StorageOS on Charmed Kubernetes
charmed-osm-get-started    Getting started with Charmed OSM 1
monitor-elasticsearch-with-elasticsearch-and-kibana    Set up remote Elasticsearch monitoring of an Elasticsearch cluster
lma-light    Deploy the COS Lite observability stack on MicroK8s
0 reference Reference
commands    CLI commands
juju-cheatsheet—all-commands juju cheatsheet - all commands
juju-cheatsheet—common-tasks juju cheatsheet - common tasks
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-output     show-action-output
juju-show-action-status     show-action-status
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-binaries     sync-agent-binaries
juju-sync-tools     sync-tools
juju-trust     trust
juju-unexpose     unexpose
juju-unregister     unregister
juju-update-clouds     update-clouds
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
Plugin commands
juju-backups     backups
juju-list-backups     list-backups
juju-remove-backup     remove-backup
juju-restore-backup     restore-backup
juju-show-backup     show-backup
juju-upload-backup     upload-backup
entities   Tools, entities, and processes
action    Action
agents    Agent
applications    Application
applications-and-charmed-operators     Applications and charmed operators
bootstrapping    Bootstraping
bundles    Bundle
charmed-operators    Charmed operator (‘charm’)
clouds    Cloud
constraints    Constraint
controllers    Controller
credentials    Credential
the-juju-dashboard    Dashboard (as in “the Juju dashboard”)
endpoints    Endpoint
high-availability    High-availability
the-juju-client    juju (the Juju CLI tool, the Juju client)
leaders    Leader
juju-logs   Logs
machines    Machine
models    Model
placement-directive    Placement directive
plugins    Plugin
plugins-wait-for     The wait-for plugin
list-of-available-plugins     List of available plugins
relations    Relation
removing-things    Removing things
network-spaces     Network spaces
storage    Storage
subnet    Subnet
telemetry-and-juju    Telemetry
units    Unit
upgrading    Upgrading things
user    User
user-types-and-abilities     User types and abilities
the-juju-web-cli    Web CLI
glossary   Other terms
  Other reference
environment-variables   Environment variables
fan-container-networking   Fan container networking
offline-mode-strategies   Offline mode strategies
status-values   Status values
supported-features   Supported features
0 explanation Explanation
application-modelling    Application modelling
roadmap   Roadmap & Releases


Mapping table
Location Path
/docs/olm/basic-concepts /docs/olm/reference
/docs/olm/quick-reference /docs/olm/basic-concepts
/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

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