Charmcraft

Charmcraft is the command-line tool for initializing, packaging, and publishing Juju charms.

For new projects, Charmcraft generates all the necessary files, which can be tailored to an app by modifying the YAML and Ops-powered Python inside. With extensions, Charmcraft adapts the template content to languages and frameworks such as Django, Express, and Go. Then, with a few commands, charm authors can package the charm and publish it to Charmhub.

With Charmcraft, developers can bypass boilerplate steps and focus on the content of their charms. Additionally, its integration with tools and platforms such as Ops and Charmhub provide a complete charm development experience.

Charmcraft is for platform engineers, site reliability engineers, and systems administrators looking to charm an application for their Juju deployment.

In this documentation

Installation and setup

Manage Charmcraft

Vocabulary and syntax

Configure package informationCommandscharmcraft.yamlPart keys

Platform compatibility

Select charm platformsBasesPlatforms

Software integration

PartsManage resourcesManage libraries

12-factor web apps

TutorialsInitializationConfigurationIntegrationUsageExtensions

Debugging

Analyzers and linters

Distribution

Publish a charmManage namesManage tracksManage channelsManage revisions

How this documentation is organized

The Charmcraft documentation embodies the Diátaxis framework.

  • The tutorials are lessons that steps through the main process of packaging a charm.

  • How-to guides contain directions for crafting charms.

  • References describe the structure and function of the individual components in Charmcraft.

  • Explanations aid in understanding the concepts and relationships of Charmcraft as a system.

Project and community

Charmcraft is a member of the Canonical family. It’s an open source project that warmly welcomes community projects, contributions, suggestions, fixes and constructive feedback.

Get involved

Governance and policies