diff options
| author | Claude <noreply@anthropic.com> | 2026-09-02 21:11:01 -0500 |
|---|---|---|
| committer | Claude <noreply@anthropic.com> | 2026-09-02 21:11:01 -0500 |
| commit | 9f3f9ee638e0a82960446f74345e9ee99bfec474 (patch) | |
| tree | 4028a24c0b9530f603153e715dee3badcb86166d | |
| parent | f10cd386fd85386303253287d3e0c5e2a7d52124 (diff) | |
Rename the default base snapshot from "ready" to "default"
"ready" read as a status word rather than a label for what's actually a
mutable pointer to "the current recommended base image," re-tagged as it
evolves - the exact operation we did twice this session. "default" names
that role directly: it's the value --base-snapshot falls back to, nothing
more claimed.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
| -rw-r--r-- | README.md | 5 | ||||
| -rw-r--r-- | USER_GUIDE.md | 15 | ||||
| -rw-r--r-- | cmd/skiff/main.go | 4 |
3 files changed, 13 insertions, 11 deletions
@@ -79,13 +79,14 @@ Unmount devfs and snapshot once the image can actually build and run apps: ``` # umount /skiff/base/dev -# zfs snapshot zroot/skiff/base@ready +# zfs snapshot zroot/skiff/base@default # zfs create -o mountpoint=none zroot/skiff/appbase # zfs create -o mountpoint=none zroot/skiff/appdata # mkdir -p /skiff/apps ``` -`ready` is the snapshot every app's dataset gets cloned from. Re-snapshot +`default` is the snapshot every app's dataset gets cloned from unless +`--base-snapshot` says otherwise. Re-snapshot under a new tag after patching the base (e.g. `security-2026-08`) and pass `--base-snapshot` to `new-app` to pick it up. diff --git a/USER_GUIDE.md b/USER_GUIDE.md index d81ae5d..587a625 100644 --- a/USER_GUIDE.md +++ b/USER_GUIDE.md @@ -293,7 +293,7 @@ Unmount devfs and snapshot once the image can actually build and run apps: ``` # umount /skiff/base/dev -# zfs snapshot zroot/skiff/base@ready +# zfs snapshot zroot/skiff/base@default # zfs create -o mountpoint=none zroot/skiff/appbase # zfs create -o mountpoint=none zroot/skiff/appdata # mkdir -p /skiff/apps @@ -320,7 +320,8 @@ Keeping the OS layer and the app's data on separate datasets is what lets `skiff rebuild` (see [Rebuilding a jail](#rebuilding-a-jail)) destroy and reclone the former without any risk to the latter. -`ready` is the snapshot every app's dataset gets cloned from. Re-snapshot +`default` is the snapshot every app's dataset gets cloned from unless +`--base-snapshot` says otherwise. Re-snapshot under a new tag after patching the base (e.g. `security-2026-08`) and pass `--base-snapshot` to `new-app` to pick it up. @@ -531,8 +532,8 @@ Current `skiff` versions self-heal this automatically (checkout runs ### Rebuilding a jail ``` -# skiff rebuild --app myapp [--base-snapshot ready] [--iface vtnet0] -# skiff rebuild --all [--base-snapshot ready] [--iface vtnet0] +# skiff rebuild --app myapp [--base-snapshot default] [--iface vtnet0] +# skiff rebuild --all [--base-snapshot default] [--iface vtnet0] ``` Every app's jail is really two independent ZFS datasets: an **OS @@ -612,7 +613,7 @@ Carried over from the project's own README, plus what testing surfaced: ``` skiff new-app --name <app> --ip <ip> [--port 8080] [--health-path /healthz] - [--base-snapshot ready] [--iface vtnet0] + [--base-snapshot default] [--iface vtnet0] skiff deploy --app <app> --new <sha> [--ref refs/heads/main] (normally invoked by the post-receive hook, not by hand) @@ -620,8 +621,8 @@ skiff deploy --app <app> --new <sha> [--ref refs/heads/main] skiff rollback --app <app> --list skiff rollback --app <app> --to <snapshot-tag> -skiff rebuild --app <app> [--base-snapshot ready] [--iface vtnet0] -skiff rebuild --all [--base-snapshot ready] [--iface vtnet0] +skiff rebuild --app <app> [--base-snapshot default] [--iface vtnet0] +skiff rebuild --all [--base-snapshot default] [--iface vtnet0] skiff config set --app <app> KEY=VALUE [KEY=VALUE...] skiff config unset --app <app> KEY [KEY...] diff --git a/cmd/skiff/main.go b/cmd/skiff/main.go index 52d57c1..d9535f9 100644 --- a/cmd/skiff/main.go +++ b/cmd/skiff/main.go @@ -87,7 +87,7 @@ func cmdNewApp(args []string) error { ip := fs.String("ip", "", "IPv4 address to assign the jail (operator-chosen)") port := fs.Int("port", layout.DefaultHealthPort, "port the app listens on inside the jail") healthPath := fs.String("health-path", layout.DefaultHealthPath, "health check path") - baseSnapshot := fs.String("base-snapshot", "ready", "snapshot on the base dataset to clone from") + baseSnapshot := fs.String("base-snapshot", "default", "snapshot on the base dataset to clone from") iface := fs.String("iface", layout.DefaultJailIface, "host interface the jail's IP is aliased onto") fs.Parse(args) @@ -200,7 +200,7 @@ func cmdRebuild(args []string) error { fs := flag.NewFlagSet("rebuild", flag.ExitOnError) app := fs.String("app", "", "app name") all := fs.Bool("all", false, "rebuild every app") - baseSnapshot := fs.String("base-snapshot", "ready", "snapshot on the base dataset to clone from") + baseSnapshot := fs.String("base-snapshot", "default", "snapshot on the base dataset to clone from") iface := fs.String("iface", layout.DefaultJailIface, "host interface the jail's IP is aliased onto") fs.Parse(args) |
