Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Cargoship configuration file

holds the values for the ., or root, section of the config file

Rendered from schema/config-distro-schema.json.

PropertyTypeRequiredDefaultDescription
ageAgeOptionsnoare the age keys used to encrypt and decrypt registry credentials
architecturestringnothe CPU architecture to use for OCI operations
distroDistroOptionsnoare various options used by the command
log_filebooleannoenables always writing a full-verbosity debug log to a file, regardless of LogLevel
log_formatstringnoconsolehow the logs are displayed well running One of console, json, dev.
log_levelstringnoinfothe level of logs that will be displayed One of warn, info, debug, trace.
no_colorbooleannowhether to disable terminal color codes in logging and stdout prints
timeoutstringno20mthe longest we will run long ran tasks before failing
tmp_dirstringno/tmpthe directory where we store stuff before deleting them
zarf_cachestringnois the folder where cargoship caches what it fetches: oras artifacts, and the release assets the example generation targets read

AgeOptions

holds the values for the .age section of the config file, the age alternative to the Ansible Vault password given by –vault-password-file.

PropertyTypeRequiredDefaultDescription
identity_filesarray of stringnoare paths to identity files, each holding either the age private keys that
decrypt registry credentials or an SSH private key. A leading ~ is expanded to the home
directory of the user running cargoship. Equivalent to repeating –age-identity-file.
recipientsarray of stringnoare the public keys registry credentials are encrypted to, each either an age
recipient or an SSH public key. Equivalent to repeating –age-recipient.
recipients_filesarray of stringnoare paths to files holding public keys, one per line, with # comments
allowed, mixing age recipients and SSH public keys freely. An authorized_keys file works as
it is. A leading ~ is expanded to the home directory of the user running cargoship.
Equivalent to repeating –age-recipients-file.

DistroCreateOptions

holds the values for the .distro.create section of the config file

PropertyTypeRequiredDefaultDescription
file_overrideFileOverrideMapnomaps a source URL prefix to the location cargoship downloads from
instead, for example {“https://rpm.rancher.io”: “https://mirror.example.com/rpm-rancher”}.
The value may also be a local directory, for builds from pre-staged assets.
registry_overrideRegistryOverrideMapnomaps a source registry to the registry cargoship uses instead
when pulling images, for example {“docker.io”: “mirror.example.com”}

DistroOptions

holds the values for the .distro section of the config file

PropertyTypeRequiredDefaultDescription
allow_downgradebooleannowhether a run continues when a host already runs an engine version newer
than the one the package carries
allow_unmanaged_nodesbooleannowhether an apply continues when the cluster holds a node that no host
in the config accounts for
concurrencyintegernohow many nodes we will try to interact with at a time, 0 means that all nodes will be done at once
createDistroCreateOptionsnoare options used by the create subcommand
firewallbooleannotruewhether we will update the host firewall
hostsbooleannotruewhether we will update the etc host file
kubeconfigstringnopath of the kubeconfig file the admin creds are merged into, the standard
location – KUBECONFIG, else ~/.kube/config – when empty
label_nodesbooleannotruewhether we will check and add the node-role.kubernetes.io/<profile> label on nodes
oci_concurrencyintegernois how many concurrent oci artifacts that will be pushed at a time
outputstringnothe folder that we will create the distro tar balls in
public_keystringnopath to public key file for validating signed packages
publishDistroPublishOptionsnoare options used by the publish subcommand
receipt_pathstringnois where the lifecycle commands – apply, prepare, reset and
engine-config-sync – write the structured JSON record of a run, empty for no receipt.
Equivalent to –receipt-path, and templated the same way: {command} expands to the
command that ran and {timestamp} to when it started, so one configured value gives
every run its own file rather than overwriting the last.
retryintegernohow many times an operation is retried before the run fails, including a
package push to an OCI registry – it is what –retries defaults to on publish
and sign
typestringnoof distro we are interacting with One of rke2, k3s.
update_kubeconfigbooleannotruewhether we will update a kubeconfig file with the admin creds for the cluster
verifystringnothe Cargoship package signature One of never, if-possible, always.
worker_concurrencystring or integernonumber of worker nodes that will be upgraded at once, as a fixed count
(“5”) or a percentage of the batch (“25%”)

DistroPublishOptions

holds the values for the .distro.publish section of the config file

PropertyTypeRequiredDefaultDescription
signing_keystringnois the private key used to sign, or re-sign, the package: a local file path, or env://ENV_VAR to read the key from an environment variable. Cloud KMS references are not supported – they cannot be reached from an air-gapped management node.
signing_key_passwordstringnothe password for the private key used for signing Sensitive. Treat this value as a secret: it is a credential rather than a path to one.

FileOverrideMap

maps a source URL prefix to the location cargoship downloads from instead.

PropertyTypeRequiredDefaultDescription
https://download.docker.comstringno
https://get.k3s.iostringno
https://github.comstringno
https://pkgs.k8s.iostringno
https://rpm.rancher.iostringno

RegistryOverrideMap

maps a source registry to the registry cargoship uses instead.

PropertyTypeRequiredDefaultDescription
docker.iostringno
gcr.iostringno
ghcr.iostringno
public.ecr.awsstringno
quay.iostringno
registry.k8s.iostringno