Per-VM SSH aliases for external hosts a dev VM reaches with its own key #57
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
allod/strategy#57
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?
Let a dev VM declare, in its own identity record, the few external hosts it reaches with its own key, and have the framework render those aliases beside its forge entry, so that a VM which lost a working alias when the hypervisor's address book stopped reaching it (allod/strategy#56) gets it back without the address book. Multi-repo home for that change; the public work is allod/archetypes#83.
Primary goals:
devVMs.<vm>.sshHostsin the secrets identity, same entry shape asidentity.sshHosts, projected ontodevIdentities.<vm>.sshHostswithidentityFiledefaulting to that VM's own key andidentitiesOnlyto true. Empty by default, so nothing changes for a fork that declares none.Hostpatterns that way; an alias that is not one literal token of letters, digits, dot, underscore and hyphen, because a space or a glob character renders a pattern that can capture the forge host and evade the name check; and an entry without a hostname.identity.sshHoststhrough the existing field-name translation, beside the forge entry; a fork whose secrets predate the field gets an empty set.Children
identity.sshHostsin the dev VM builder, refuse a forge-named alias there too, extend thessh-settingscheckdevIdentities, its refusals, and one synthetic entry on the template dev machine (part of the allod/archetypes#83 change)Landing order
Free. The framework reads the field with an empty default, so a secrets fork without it composes unchanged; a fork with the field and the old framework carries inert data. Aliases appear on a VM at the first rebuild after a deploy lock carries both.
Out of scope
Anything keyed to the hypervisor's key;
identity.sshHostsand its consumers; renaming the address book's field names.All children landed and the deployment's lock carries the framework, the template and its own per-VM data; the first alias appears on the deployment's VM at its next rebuild.
Reopened: my closing comment misread allod/archetypes#82 as the child implementation. allod/archetypes#83 has no PR yet; the secrets-side data of one deployment is merged and inert, as the landing-order section says it can be. Remaining: allod/archetypes#83 and the template change it carries.
The two public changes are open: allod/secrets#34 (the
devVMs.<vm>.sshHostsprojection, its refusals, thedev-ssh-hostscheck and one template entry) and allod/archetypes#85 (the dev VM builder feeds the projected list through the shared translation, refuses a forge-named or non-literal alias itself, and thessh-settingscheck covers the path). Measured on the public deploy template with both branches:allod-devrendersexample-build-cachebeside an unchanged forge block, both keyed to its own key;nexusandprivacy-1keep the same system derivations as the current lock.Merge order: allod/secrets#34 first. Then allod/archetypes#85 takes one more commit bumping its own
secretslock, so its composed wiring assertion sees the template alias and pins the new import on the repo's own checks; after that it merges. Runtime order in a deploy lock stays free as the issue says.Review found three boundary holes beyond the issue text, now closed on both layers: an
extraOptions.headerkey or a newline in any string field could open a block that captures the forge entry; two aliases differing only by case both matched one host; and the framework's own fallback compared raw names, so a trailing space or a literalHostprefix slipped past.extraOptionskeys are now restricted to bare directive names, letters and digits only, on both paths; a deployment address book entry with an unusual key would fail loudly at the lock bump.