Configuration#
This page is for anyone writing or editing deployment configuration. It documents every
field of the files you author and how they nest. The field tables are curated by hand
from the Pydantic models in src/deploy_tools/models, so a change to those models needs
a change here too; the schema reference renders the same fields
mechanically from the generated JSON schemas. For the meaning of individual terms, see
the glossary.
A Release file#
Each Release file has two fields:
Field |
Purpose |
|---|---|
|
The Module being released (below). |
|
Whether this version is deprecated. Defaults to |
A Module#
A Module is the unit an end user loads. It carries:
Field |
Purpose |
|---|---|
|
The name an end user loads it by. |
|
The version an end user loads it by. |
|
Shown by |
|
Environment variables set when the Module is loaded. |
|
Other Modules loaded first, optionally version-pinned. |
|
One or more applications providing the executables (below). |
|
Extra commands run when the Module is loaded — see below. |
|
Extra commands run when the Module is unloaded — see below. |
|
Permit in-place changes to this version — see the guard rails. |
|
Keep this version out of automatic default selection — see default versions. |
env_vars — each entry is a name/value pair:
Field |
Purpose |
|---|---|
|
The variable to set. |
|
The value to set it to. |
dependencies — each entry names another Module:
Field |
Purpose |
|---|---|
|
The Module to load first. |
|
The version to pin to. If omitted, that Module’s default version is resolved at load time. |
load_script and unload_script are injected raw into the generated Modulefile. They
are for advanced cases the other fields cannot cover — check with a deploy-tools admin
before using them.
The three application types#
Every entry under applications sets app_type to select one of three kinds; a single
Module can mix them.
|
Provides |
|---|---|
|
Commands that run inside a container image |
|
A single executable running a bash script |
|
A downloaded executable added to the path |
The demo example-module-apps Module combines an Apptainer app with a Shell app:
module:
name: example-module-apps
version: "0.1"
description: Demonstration of a module configuration folder
env_vars:
- name: OTHER_VALUE
value: Test message OTHER_VALUE from example-module-folder
applications:
- app_type: apptainer
container:
path: docker://ghcr.io/apptainer/lolcow
version: latest
entrypoints:
- name: cowsay-hello
command: cowsay
options:
command_args: Hello
- name: show-directory
command: ls
options:
command_args: -al /host_tmp
global_options:
mounts:
- /tmp:/host_tmp:ro
- app_type: shell
name: test-echo-module-folder
script:
- echo $OTHER_VALUE
Apptainer#
One container image with one or more entrypoints, each mapping an executable name to a command run inside the container.
Field |
Purpose |
|---|---|
|
The image to use (below). |
|
The executables provided (below). |
|
Options applied to every entrypoint. |
container — splits the image reference into path:version:
Field |
Purpose |
|---|---|
|
The image URL, excluding the version or tag. |
|
The image version or tag. |
entrypoints — each entry is one executable:
Field |
Purpose |
|---|---|
|
The executable provided. |
|
The command to run inside the container. Defaults to |
|
Options applied to this entrypoint only. |
options and global_options — both take the same fields:
Field |
Purpose |
|---|---|
|
Arguments passed to Apptainer when launching the container. |
|
Arguments passed to the command being run. |
|
Mount points as |
|
Host binaries, found on the current |
Shell#
A single executable running a bash script.
Field |
Purpose |
|---|---|
|
The executable provided. |
|
The lines of bash it runs. |
Binary#
An executable downloaded, hash-checked and added to the path.
Field |
Purpose |
|---|---|
|
The executable provided. |
|
Where the binary is downloaded from. |
|
The expected hash of the download. |
|
|
The demo argocd Module uses one:
module:
name: argocd
version: v2.14.10
description: Demonstration of binary download
applications:
- app_type: binary
name: argocd
url: https://github.com/argoproj/argo-cd/releases/download/v2.14.10/argocd-linux-amd64
hash_type: sha256
hash: d1750274a336f0a090abf196a832cee14cb9f1c2fc3d20d80b0dbfeff83550fa
Settings#
settings.yaml holds deployment-wide settings. It currently has a single field,
default_versions, mapping a Module name to the version handed to module load <name>
when no version is given:
default_versions:
dls-pmac-control: "0.1"
How that choice is resolved — and how to keep a version out of automatic selection — is covered in default version resolution.