Charmed operator ('charm')

See also:

A charmed operator (‘charm’) is a software component that contains all of the instructions necessary for deploying and configuring an application. Charms make it easy to reliably and repeatedly deploy applications across many clouds, allowing the user to scale the application with minimal effort.

Charmed operators are publicly available on Charmhub.

The simplest scenario is when a charmed operator is deployed (by the Juju client) with the deploy command without any options to qualify the request. By default, a new instance will be created in the backing cloud and the application will be installed within it:


Subordinate charm

A subordinate charmed operator augments the functionality of another regular charmed operator, which in this context becomes known as the principal charmed operator. When a subordinate charmed operator is deployed no units are created. This happens only once a relation has been established between the principal and the subordinate.

I think the description of a charmed operator here is a bit oversimplified. The description in the SDK docs goes into more details and gives a better idea of why a charm is more than just, say, an Ansible Playbook or Helm chart. At the very least, I think it would be good to link to that other doc.

Thanks for your input, @cory_fu . This text is actually not new—it used to be a section under OLM docs >> Concepts, but I thought it didn’t have sufficient visibility there, so I pulled it out into a separate doc, so what you’re seeing here is simply the result of that. I think it’s fine for us to have two docs on this, one in the OLM docs, targeted at an OLM end user, and one in the SDK docs, targeted at a charm author. But I agree with you that the two perspectives should be connected, not just for this concept but indeed for a lot of other concepts too. (For example, for the notion of storage, we again have an OLM perspective and an SDK perspective, and there too the reader might benefit if we connected the two.) I think I’ll just include a link to that to the SDK docs for now, as you suggest. Thanks again!