The Charmed Operator Lifecycle Manager (OLM) docs

Juju’s Charmed Operator Lifecycle Manager (“the OLM”) is a hybrid-cloud application management and orchestration system for installation and Day 2 operations. It helps deploy, configure, scale, integrate, maintain, and manage Kubernetes native, container-native and VM-native applications—and the relations between them.

A charmed operator (also known, more simply, as a “charm”) encapsulates a single application and all the code and know-how it takes to operate it, such as how to combine and work with other related applications or how to upgrade it. Charms are programmed to understand a single application, its operations, and its potential to communicate or integrate with other applications. A charm defines and enables the channels by which applications connect.

There are four main steps—expressed by four commands—that compose the core of Juju OLM’s operations. These steps are the backbone of even the most complex deployments and offer a robust foundation for Day 2 operations.

1. Register a new cloud:

     juju bootstrap <my-cloud>

2. Create a model:

     juju add-model <my-model>

3. Deploy applications (as many as you want):

     juju deploy <application foo>

     juju deploy <application bar>

4. Relate applications:

     juju relate <application foo> <application bar>


Level Path Navlink
0 The OLM docs
1 welcome-to-juju-docs About the OLM
0 Tutorials
1 get-started-on-a-localhost Get started on a localhost
1 get-started-on-kubernetes Get started on Kubernetes
0 how-to How-to guides
1 create-an-ubuntu-virtual-machine-with-multipass Create an Ubuntu virtual machine with Multipass
1 installing-juju Install the Juju CLI
1 Set up your cloud
1    Kubernetes
2 microk8s MicroK8s
2 azure-kubernetes-service-(azure-aks) Azure Kubernetes Service (AKS)
2 google-kubernetes-engine-(gke) Google Kubernetes Engine (GKE)
2 amazon-elastic-kubernetes-service-(amazon-eks) Amazon Elastic Kubernetes Service (Amazon EKS)
1    Localhost
2 lxd LXD
1    Private cloud
2 openstack OpenStack
2 vmware-vsphere VMware vSphere
2 maas MAAS
2 manual-setup Manual setup
1    Public cloud
2 amazon-aws Amazon Web Services (AWS)
2 azure Microsoft Azure
2 google-gce Google Compute Engine (GCE)
2 oracle Oracle
2 rackspace Rackspace
2 equinix-metal Equinix Metal
1 Operations tasks
2 accessing-individual-machines-with-ssh Access individual machines with SSH
2 working-with-actions Work with actions
2 collecting-juju-metrics Collect Juju metrics
2 accessing-the-dashboard Access the dashboard
2 upgrade-the-dashboard Upgrade the dashboard
2 defining-and-using-persistent-storage Define and use persistent storage
2 removing-things Remove things
2 manage-constraints Manage constraints
2 use-lxd-clustering Use LXD clustering
2 use-lxd-profiles Use LXD profiles
2 troubleshooting Gather information for troubleshooting
2 troubleshoot-model-upgrades Troubleshoot model upgrades
2 troubleshoot-clouds Troubleshoot clouds
2 troubleshoot-additions Troubleshoot additions
2 troubleshoot-removals Troubleshoot removals
2 debug-charm-hooks Debug charm hooks
1 System administration tasks
2 upgrading Upgrade
2 upgrading-client Use the client
2 controller-backups Back up the controller
2 high-availability-juju-controller Make the controller highly available
2 working-with-multiple-users Work with multiple users
2 working-offline Work offline
2 migrating-models Migrate models
2 cloud-image-metadata Configure cloud image metadata
1 additional-how-to-guides Additional how-to guides
0 Reference
1 commands All Juju commands
1 clouds Clouds
1 adding-clouds Adding clouds
1 credentials Adding credentials
1 controllers Controllers
1 models Models
1 deploying-applications Application deployment
1 advanced-application-deployment Advanced application deployment
1 constraints-reference Constraints reference
1 relations Relations
1 cross-model-relations Cross-model relations
1 fan-container-networking Fan container networking
1 high-availability Application high-availability
1 network-spaces Network spaces
1 status-values Status values
1 environment-variables Environment variables
1 plugins Plugins
1 plugins-wait-for The wait-for plugin
1 list-of-available-plugins List of available plugins
1 juju-logs Juju logs
1 telemetry-and-juju Telemetry and Juju
1 roadmap Roadmap & Releases
0 Explanation
1 quick-reference Basic Juju concepts
1 about-user-types-and-abilities About user types and abilities
1 about-constraints About constraints
1 using-the-dashboard About the dashboard
1 using-the-juju-web-cli About the Web CLI
1 glossary Glossary
1 applications-and-charmed-operators Applications and charmed operators


Mapping table
Path Location
Juju | Other tutorials Juju | Additional how-to guides
/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 /docs/sdk
/t/deploying-advanced-applications /t/advanced-application-deployment
/docs/olm/accessing-juju’s-web-interface /docs/olm/accessing-the-dashboard

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 - and the soon-to-be created, 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