Identity and host-key slot for the template's bitcoin-node #45
Labels
No labels
blocked
bug
decision
duplicate
enhancement
handoff
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/secrets#45
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?
Give the template's
bitcoin-nodemachine its identity so the framework's machine-key assertion accepts the inventory entry and a fork's bootstrap keys the VM like every other guest. Part of allod/strategy#68.Primary goals:
privacyVMs.bitcoin-node = { username = "bitcoin"; }and ansshHostsentry at the machine's inventory address, the same shape asprivacy-1.machine-host-keys.jsonentry with a synthetic public key and the shared placeholder ciphertext atsecrets/vm-host-keys/bitcoin-node-ssh.age, whichgetting-started.shreplaces with a real key on a fresh install as it does for the others.secrets.nix's per-VM host-key rule picks the new entry up with no code change.Current state and specifics
forgewas added the same way (the commit "identity: give forge a service identity and host key"): identity entry, host-key entry, placeholder blob, and an inventory lock bump once the machine existed there. This repository's checks readinventory.lib.machines, so until the inventory entry lands they run with--override-input inventorypointing at that branch.Scope
In:
identity.nix,machine-host-keys.json, the placeholder ciphertext, and the inventory lock bump once allod/inventory carries the machine. Out: the machine facts (allod/inventory), the profile, forge access (a privacy VM has none).Implementation is ready on branch
agent/bitcoin-node-identityate8419c1, one commit, relayed to the owner for the pull request. Proposed PR body follows.This gives the template's
bitcoin-nodemachine (allod/inventory#26) its identity, so the framework's machine-key assertion accepts the entry and a fork's bootstrap script keys the VM on a fresh install as it does every other guest. Nothing changes for any existing machine or secret: the identity is abitcoinaccount and an ssh host at the machine's template address, the host-key slot is a synthetic public key plus the same placeholder ciphertext the other four slots already share, andsecrets.nix's existing per-VM rule covers the new slot without a code change. What proves it is this repository's checks run with the inventory branch substituted, and the full composition recorded on allod/strategy#68. If it is wrong, revert the commit.What changes
identity.nix:privacyVMs.bitcoin-node = { username = "bitcoin"; }andsshHosts.bitcoin-nodeat192.0.2.13.machine-host-keys.json: abitcoin-nodeentry,staged = null. The public key is a throwaway generated for the placeholder; its private half was discarded.secrets/vm-host-keys/bitcoin-node-ssh.age: a byte-for-byte copy of the shared placeholder blob (getting-started.shreplaces it).flake.lockis not bumped here: the inventory entry is on a branch. The owner bumpsinventoryin this repository once allod/inventory#26 is on master, before this merges.Risk
R1: synthetic identity data in a template; no real key material. Rollback is a revert.
Validation
Branch
agent/bitcoin-node-identity, one commit (e8419c1). Run with--override-input inventorypointing at the allod/inventory#26 branch (1ecbf71), since the lock is not bumped here:nix flake check --override-input inventory <branch> .:all checks passed!.lib.vmHostKeySecretFileskeys:["allod-dev","bitcoin-node","forge","nexus","privacy-1"];lib.identity.privacyVMscarriesbitcoin-node = { username = "bitcoin"; }.sha256sum secrets/vm-host-keys/*.age: one digest across all five files.d03e92a) all substituted:allod checkpassesAll 8 steps, andmachine bitcoin-nodeinstantiates to a toplevel derivation, which is the first time the node profile has composed through the public privacy builder.Part of allod/strategy#68. Closes allod/secrets#45.
Landed on master in commit
60fa5af: the bitcoin-node identity, host-key slot and placeholder blob; the inventory lock now pins the machine commit. Verified against the files on master today; closing as completed.