Charms

Scalable application services defined

Charms give Juju its power. They encapsulate application configurations, define how services are deployed, how they connect to other services and are scaled. Charms are easily shared and there are 100s of Charms already rated and reviewed in our Charm store.

Best practice built in

Juju is designed to encourage collaboration on the optimal ways to deploy, configure and connect applications to other services. Many Charms have had leading experts contribute — you benefit from their experience and knowledge.

Charms are vetted and scored to help give you an indication of quality and the very best charms are featured on jujucharms.com

Inside a Charm

Charms define how services integrate and how their service units react to events in the distributed environment, as orchestrated by Juju. Charms can be written in any language that runs on Ubuntu. To pull it altogether, you just need to create a simple metadata.yaml file that defines the Charms’ metadata, interfaces, hooks and requires.

Learn more about the anatomy of a Charm ›

Customise existing Charms

Charms are written in a variety of languages although the majority are written as bash or python scripts. You can modify any existing Charm to suit your needs — pull files from internal repositories, set security or admin policy or anything else needed to make them fit your environment.

Charm your application

Creating new Charms is easy. Charms can be written in your choice of language and adapting existing scripts is straightforward. You can keep the new Charms private, or share them back with the community.

Learn more about writing Charms ›

Are you an ISV?

We are working with many ISVs to Charm their applications and give a vast, growing community access to their application quickly. Contact us to find out how we can work together.

ISVs contact us today ›

  • 1 Create new Charms based on templates
  • 2 Use bash, python, perl, php or just about any other language supported on Ubuntu to write your Charm
  • 3 Reuse any Puppet or Chef script you have
  • 4 Develop store and track on Launchpad, github or your own repository