A switch to take a declared template machine out of the build #67
Labels
No labels
blocked
bug
decision
duplicate
enhancement
help wanted
invalid
landed?
question
ready-to-merge
stale
wontfix
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
allod/strategy#67
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?
A fork that will never host one of the template's machines, the bitcoin node for instance, should be able to switch that machine off in one place and stop paying for it in evaluation, checks, provisioning and disk, instead of deleting its entries from two repositories.
Primary goals:
vmFacts, the deploy gate (allod checkinstantiates every machine's toplevel today), the generatedvm-specs.jsonthatnew-vm,provision-vmandverify-vmread, and the installer image's authorized keys.Current state and specifics
A machine is three entries that must agree: an inventory entry (facts), a secrets identity (account, host key), and a profile definition (modules). The framework asserts the inventory's machine keys and the secrets' identity keys match exactly, so removing a machine today is a coordinated edit in two data repositories, and a fork that only wants to skip one machine has no smaller move. Everything downstream iterates the inventory:
machineConfigurationsandvmFactsin archetypes, the deploy gate, and the hypervisor scripts throughvm-specs.json.The trigger is the bitcoin node arriving in the template as a fourth machine (allod/profiles#14, allod/nexus#93, and the inventory and secrets entries tracked beside them). A laptop that runs the stack as a development box has no use for a node and should not evaluate one on every gate, nor have
provision-vmable to create a 40 GB image for it by accident.Default to decide: inventory is the source of truth for machine facts, so the switch most naturally lives there as a machine fact, with archetypes filtering on it before the key-match assertion and
vm-specs.jsoneither omitting the machine or carrying the flag for the scripts to refuse on. Alternatives (a profile-side flag; a deploy-flake override) are follow-ups unless the default fails.Scope
This is the tracking issue for a multi-repo arc; children land in allod/inventory (the fact and its validation), allod/archetypes (the filter and the assertion), and allod/nexus (the scripts' handling). Out: changing what the template's machines are.