Repository navigation
v0.6.0
Changelog
Two things that live on the machine. A pruned release's images now leave the
store with it, on release prune and on dev mode's automatic prune, so a dev
machine following a channel no longer fills its disk one build's images at a
time. And a secret can be given to the user its container runs as, so an image
that does not run as root reads its Compose file secret without user: "0:0".
Upgrading changes no schema: the installation stays at 12, and a bundle built
for 0.5.0 installs unchanged. Three things behave differently:
- The first prune after upgrading also removes the images of the releases it
prunes. It removes only names that no release left on the machine uses, in
any installation, and never forces a removal. While any release directory
on the machine cannot be read, it removes no image at all. Images left by
earlier prunes stay; therelease prunereference says how to clear them
by hand. release prunetakes the deployment lock. A script that runs it while an
updateof the same installation holds the lock is now refused with exit 4,
unless it passes--wait.- A bundle whose secret schema declares
ownerneeds
compatibility.min_manager_version: "0.6.0", and a manager running as root
to apply it. A manager on macOS refusesowner, and user-namespace
remapping and rootless Docker are not handled.
The JSON changes are additive: release prune --json gains dry_run and
images, and secret render --json gains uid and gid.
Added
release pruneremoves the images of the releases it prunes. A release directory went and every image the runtime pulled or loaded for it stayed, so a dev machine following a channel, which prunes after every update, filled its disk one build's images at a time. The pruned releases' images now go with them, on bothrelease pruneand dev mode's automatic prune. A name stays when any release left on the machine, in any installation and whatever its role, still names it; spellings the daemon treats as one name, such aspostgres@sha256:…anddocker.io/library/postgres@sha256:…, count as one. Nothing is forced: a name a container uses is reported as kept, and the prune still succeeds. If any release directory on the machine cannot be read, no image is removed and the report names the directory. Images left by earlier prunes are not reclaimed; therelease prunereference says how to clear them by hand.- A secret can be given to the user its container runs as. Every rendered secret was
0400and the manager's, which is root, and Compose ignoresuid,gidandmodeon a file secret, so a service whose image runs as another user, as distroless and most hardened images do, could not read the secret it was given. A declaration in the secret schema now takesowner: "65532"or"65532:65532", numeric only, and every render gives the file to that user:apply, an update and its restore,secret render, and a rotation. The mode stays0400and the directory0700. A manager that cannot give the file away refuses with exit 6, naming the secret, rather than render a file the container is refused; a manager on macOS refuses everyownerfor now. A schema usingownerneedscompatibility.min_manager_version: "0.6.0", so an older manager says it is too old.secret renderand its--jsonshow each file's owner asuidandgid.
Changed
release prunetakes the deployment lock, so it waits for or refuses beside anupdateof the same installation, and honours--wait. Its--jsonoutput gainsdry_run, without which a plan and an act read the same, andimageswith what was removed, what was kept and why, and why removal was skipped.
Installing this release
curl -fsSL https://morzecrew.github.io/morzer/install.sh | sh -s -- --version 0.6.0The script verifies the checksum always and the signature whenever
minisign is present; --require-signature makes a missing minisign fatal,
which is what a production runbook sets. --print-only shows everything it
detected and would do, and changes nothing. install.sh is an asset of this
release and is covered by SHA256SUMS below.
Verifying this release by hand
ARCHIVE=morzer_0.6.0_linux_amd64.tar.zst # the one you downloaded
curl -fsSLO https://raw.githubusercontent.com/morzecrew/morzer/main/morzer.pub
minisign -Vm SHA256SUMS -p morzer.pub
grep " ${ARCHIVE}$" SHA256SUMS | sha256sum -c -SHA256SUMS covers every architecture, so checking it whole fails on the
archives you did not download — and --ignore-missing, the usual way
around that, reports OK when no archive is present at all. Pulling out
the line for the file you have fails when there is nothing to check.
The signing key is the same for every release. If you have verified a
morzer release before, use the copy you already have rather than fetching
it again — a key that changes between releases is the thing worth noticing.
Release bundles are a separate artifact with their own signature and their
own key; see
https://morzecrew.github.io/morzer/reference/release-commands/#verification