See also:
You want a hooks-based charm. Such a charm cannot be initialised with Charmcraft. However, it can be packed with Charmcraft. This document shows you how.
Introduced in Charmcraft 1.4
Suppose you have a hooks-only charm, for example, tiny-bash, which you can obtain as follows:
$ git clone https://github.com/erik78se/tiny-bash
To make it packable by Charmcraft, all you need to do is navigate inside the charm directory and create a charmcraft.yaml
file with the part definition for a hooks-based charm, as shown below:
type: charm
bases:
- build-on:
- name: "ubuntu"
channel: "20.04"
run-on:
- name: "ubuntu"
channel: "20.04"
parts:
tiny-bash:
plugin: dump
source: .
prime:
- LICENSE
- README.md
- config.yaml
- copyright
- hooks
- icon.svg
- metadata.yaml
After this, you can pack your charm with charmcraft pack
, as usual:
$ charmcraft pack
Charms packed:
tiny-bash_ubuntu-20.04-amd64.charm
If successful, the result should look as below, i.e., the charm file should contain all the files listed in the prime
section of the tiny-bash
part and the charm manifest.
$ unzip -l tiny-bash_ubuntu-20.04-amd64.charm
Archive: tiny-bash_ubuntu-20.04-amd64.charm
Length Date Time Name
--------- ---------- ----- ----
423 2021-11-12 19:37 metadata.yaml
431 2021-11-12 19:37 README.md
12 2021-11-12 19:37 config.yaml
3693 2021-11-12 19:37 icon.svg
38 2021-11-12 19:37 copyright
261 2021-11-12 20:08 manifest.yaml
34523 2021-11-12 19:37 LICENSE
381 2021-11-12 19:37 hooks/update-status
346 2021-11-12 19:37 hooks/start
1294 2021-11-12 19:37 hooks/shared-fs-relation-changed
563 2021-11-12 19:37 hooks/stop
497 2021-11-12 19:37 hooks/leader-elected
447 2021-11-12 19:37 hooks/install
417 2021-11-12 19:37 hooks/leader-settings-changed
811 2021-11-12 19:37 hooks/upgrade-charm
625 2021-11-12 19:37 hooks/config-changed
--------- -------
44762 16 files
And you can also deploy your application with juju deploy
, as usual:
$ juju deploy ./tiny-bash_ubuntu-20.04-amd64.charm
Located local charm "tiny-bash", revision 0
Deploying "tiny-bash" from local charm "tiny-bash", revision 0
If successful, the result should look as below, i.e., with the application status active.
$ juju status
Model Controller Cloud/Region Version SLA Timestamp
default localhost-localhost localhost/localhost 2.9.12 unsupported 17:23:23-03:00
App Version Status Scale Charm Store Channel Rev OS Message
tiny-bash active 1 tiny-bash local 0 ubuntu update-status ran: 20:22
Unit Workload Agent Machine Public address Ports Message
tiny-bash/0* active idle 0 10.2.17.31 update-status ran: 20:22
Machine State DNS Inst id Series AZ Message
0 started 10.2.17.31 juju-55481c-0 focal Running