Skip to content

Deployment and updates

The fleet is deployed with colmena 🡕: a single command builds and applies the configuration on one or more hosts, remotely, from the admin workstation.

Fenêtre de terminal
just apply <target> [action] # alias : a
  • target = hostname, pattern ('*'), list (a,b) or colmena tag (@server).
  • action = switch (default), boot, test or build.
CommandPurpose
just apply <target>Build + activate on the target(s)
just apply-localApply on the current machine (alias al)
just apply-verbose <target>Same as apply in trace mode (alias av)

Build confidence through action: each step is less risky than the next.

Fenêtre de terminal
just apply <host> build # downloads + compiles: 100% safe, nothing is activated
just apply <host> test # activates without switching: no generation, no boot
just apply <host> # switch: activates and creates a new generation

Progress from core to edge: deploy nodes in this order, to never cut off access to a node by the one preceding it.

Diagram

The system is pinned by flakes. Updating = refresh the inputs, then redeploy.

Fenêtre de terminal
just update-flake # updates dnf/ + root, commits the locks
just apply '*' # deploys the update

The harmonia service acts as a signed binary cache for the fleet, and ncps relays it. Hosts thus retrieve already-built derivations instead of recompiling, which significantly speeds up deployments.