Accept type = service: a hypervisor guest whose state lives on a required data disk #24
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/inventory#24
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 hypervisor guest that runs one network service for the rest of the fleet and keeps its state across reprovisioning can be described in inventory once
type = "service"is a valid machine type with the shape rules that make it safe. Part of allod/strategy#65 (the forge VM is the first such machine) and the first, hypervisor-placed step of allod/strategy#45's service archetype; the builder lands inallod/archetypesand the identity inallod/secretsunder their own issues.Primary goals:
servicebesidedev,privacyandhypervisor. It is a guest:runtimeis required,host,data_diskandhost_provided_reposfollow the guest rules, andvmSpecsJsoncarries it like any other guest.data_diskfails evaluation with its own diagnostic. The disk is where every byte of the machine's state lives (the guest mounts all of/var/libon it), so a service machine without one would lose everything onprovision-vm --replace.forge_keymust benullandreposmust be empty on a service machine, each refused by its own diagnostic. A service machine holds no credential and checks nothing out; what it serves arrives through its profile.data-disk-fact-mutationsor a sibling check, each tripping exactly its own diagnostic and no other, plus a valid service machine surviving into the generated spec. The template fleet itself is unchanged here; theforgemachine arrives with allod/strategy#65's next slice.Current state and specifics
flake.nixclassifies machines inmachineDiagnostics, one disjoint diagnostic set per rule, andmkVmSpecsasserts them;runtimeFreeTypesis[ "hypervisor" ]andtypeis otherwise unconstrained beyond being a string. The README's schema table liststypeasdev,privacy, orhypervisor.data_diskis already an optional guest fact with its own diagnostics and thedata-disk-fact-mutationscheck; this issue adds the rule that makes it mandatory for one type.The
servicename was used once before for a rented host and withdrawn (allod/inventory#15, allod/archetypes#60); the comment atruntimeFreeTypesrecords that. This type is the opposite shape: a guest of this fleet with aruntime, soruntimeFreeTypesdoes not change and that comment is updated to say the name now means a stateful guest.Scope
In: the type, the three diagnostics, their fixtures, the README table and the
vmSpecsJsonbehaviour. Out: the archetypes builder, the secrets identity, any template machine, and allod/strategy#45's placement generalization.forgemachine: the template's first service VM #25Landed on master as
b5000c3.