Presets

Concierge ships with several built-in presets that cover common charm development setups. Choose one with -p / --preset. For example:

sudo concierge prepare -p dev

Preset

Included

crafts

lxd, snapcraft, charmcraft, rockcraft

dev

juju, k8s, lxd, snapcraft, charmcraft, rockcraft, jhack, astral-uv

k8s

juju, k8s, lxd, rockcraft, charmcraft

microk8s

juju, microk8s, lxd, rockcraft, charmcraft

machine

juju, lxd, snapcraft, charmcraft

In the k8s and microk8s presets, LXD is installed but not bootstrapped — it is present only so Charmcraft can use it as a build backend.

To adapt one of these presets into your own config, see How to write a custom config.

crafts.yaml

juju:
  disable: true

providers:
  lxd:
    enable: true
    bootstrap: true

host:
  packages:
    - gnome-keyring
    - python3-pip
    - python3-venv
  snaps:
    charmcraft:
    jq:
    yq:
    rockcraft:
    snapcraft:

dev.yaml

juju:
  model-defaults:
    test-mode: "true"
    automatically-retry-hooks: "false"

providers:
  lxd:
    enable: true
    bootstrap: true
  k8s:
    enable: true
    bootstrap: true
    bootstrap-constraints:
      root-disk: "2G"
    features:
      load-balancer:
        l2-mode: "true"
        cidrs: "10.43.45.0/28"
      local-storage: {}
      network: {}

host:
  packages:
    - gnome-keyring
    - python3-pip
    - python3-venv
  snaps:
    astral-uv:
    charmcraft:
    jq:
    yq:
    rockcraft:
    snapcraft:
    jhack:
      connections:
        - jhack:dot-local-share-juju

k8s.yaml

juju:
  # The default 20-minute bootstrap timeout is too short for the controller
  # pod to expose its API on slow CI runners; pin a longer one so the
  # preset works out of the box on busy GHA hosts.
  extra-bootstrap-args: --config bootstrap-timeout=1800
  model-defaults:
    test-mode: "true"
    automatically-retry-hooks: "false"

providers:
  lxd:
    enable: true
  k8s:
    enable: true
    bootstrap: true
    bootstrap-constraints:
      root-disk: "2G"
    features:
      load-balancer:
        l2-mode: "true"
        cidrs: "10.43.45.0/28"
      local-storage: {}
      network: {}

host:
  packages:
    - gnome-keyring
    - python3-pip
    - python3-venv
  snaps:
    charmcraft:
    jq:
    yq:
    rockcraft:

microk8s.yaml

juju:
  # The default 20-minute bootstrap timeout is too short for the controller
  # pod to expose its API on slow CI runners; pin a longer one so the
  # preset works out of the box on busy GHA hosts.
  extra-bootstrap-args: --config bootstrap-timeout=1800
  model-defaults:
    test-mode: "true"
    automatically-retry-hooks: "false"

providers:
  lxd:
    enable: true
  microk8s:
    enable: true
    bootstrap: true
    addons:
      - hostpath-storage
      - dns
      - rbac
      - metallb:10.64.140.43-10.64.140.49

host:
  packages:
    - gnome-keyring
    - python3-pip
    - python3-venv
  snaps:
    charmcraft:
    jq:
    yq:
    rockcraft:

machine.yaml

juju:
  model-defaults:
    test-mode: "true"
    automatically-retry-hooks: "false"

providers:
  lxd:
    enable: true
    bootstrap: true

host:
  packages:
    - gnome-keyring
    - python3-pip
    - python3-venv
  snaps:
    charmcraft:
    jq:
    yq:
    snapcraft: