roles: name the family in the role — -server for fleet machines, -box for box tenants
#76
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:bootstrap
scope:coolify
scope:db
scope:docs
scope:drill
scope:installer
scope:labels
scope:platform
scope:runner
scope:users
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/rig#76
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
One flat namespace holds two families that live on opposite sides of a trust boundary — tailnet machines rig builds, and guests a box mints — and nothing in a role name says which one you are asking for.
stagingmade that concrete: the word names both the metal that hosts guests and the guests themselves, and only one of them could have the name.The rule
-servercontrol-plane-server,workload-server,runner-server,staging-server,dev-server-boxclaude-box,codex-box,grok-box,staging-boxcustom,workstationcustompresets nothing and can be any shape — a guest included — so a family suffix would be a claim it is not entitled to make.workstationis somebody own device, not fleet infrastructure: it joins by interactive login, comes up user-owned and untagged, and the tailnet never manages it.staging-serveris a NEW preset (class=server host=yes join=authkey) — the VM-host shape #31 retired, restored under a name that cannot be confused with its own guests.host=yesalready installs the box CLI and runs boxsetup-host, so it is a table row rather than new machinery.Deliberately a hard cut
No aliases. Old role names stop working, and a box minted against the old names is re-minted rather than migrated. The fleet is two operators who can re-mint at will, and the alternative — nine deprecation paths, each a place where the old name quietly keeps working — costs more than it buys at this size.
Nothing reads role names back out of
/etc/rig/role: the marker consumers (users apply,close-root) key off theclass=andhost=traits, so this is a CLI-surface change, not a fleet migration.Known wart, tracked separately
-servercollides with the--class human|servertrait:dev-serverisclass=human, because operators enter it as themselves andclose-rootshuts its root door. The suffix names the FAMILY, the class names the DOOR POLICY, and they are orthogonal — but they share a word, and that is genuinely confusing. Fixing it means renaming the class trait to what it actually controls, which touches markers on live machines and so gets its own issue rather than riding along here.Shape of the work
lib/tenant-config.sh, dispatch, usage, README, testsBOX_BOOTSTRAP_ROLEvalues follow the tenant namesCorrection to the issue body: role names are not purely informational. Two commands match the marker on the role NAME, not on traits:
commands/coolify-install.sh:56—""|"role=control-plane"|"role=control-plane "*)commands/coolify-backup-install.sh:82— the same patternBoth WARN rather than die, so a stale marker degrades gracefully rather than breaking a box, but the rename has to carry them or
rig coolify installstarts warning on a correctly-bootstrapped control plane. Folded into the machine-role PR.Second consequence worth stating up front:
TS_HOSTNAMEdefaults to the role name, so the default tailnet hostname for these boxes changes with the rename (control-plane->control-plane-server). Anything pinning a hostname — ACL entries,environments.yamlserver names, host keys — is affected on the next bootstrap that takes the default.--hostnamehas always been available to hold a name steady.