The lab's base image trusts the documentation ranges as plain-HTTP registries, so no genesis bed could see the push to an untrusted registry that issue 92 is about (reviews 73 and 76 on mesh-host #91). The bed takes that trust off the anchor before the installer runs and asks the runtime it trusts loopback only, then runs genesis with --registry 192.0.2.10:5000 and holds that the control plane reaches the registry, trusted by the mesh's name too. The prover gains a bed kind: it builds the node-engine and its installer at each commit, the carried builder from the pinned controller, and raises the bed; a bed that never reached the step it replays skips, and a skip is an error, never the fault reproduced. Not proved yet: genesis stops at step 6 on both sides, because the temporary controller has no MESH_BUS_NATS and the bus template is refused by the installer (issue 146).
43 lines
1.8 KiB
YAML
43 lines
1.8 KiB
YAML
# GENESIS on a runtime nobody told to trust a registry: the bed of replay R92 (novox/hq issue 92).
|
|
#
|
|
# The first real genesis pushed the control plane's image to the registry it had just raised, and the
|
|
# container runtime refused: "server gave HTTP response to HTTPS client". The mesh's registry speaks plain
|
|
# HTTP on purpose, and the trust that lets a runtime speak to it was written six steps after the push. The
|
|
# lab never saw it, because its base image trusts the documentation ranges as plain-HTTP registries before
|
|
# any bed starts (src/lifecycle/base.ts). The bed takes that trust back off the anchor before genesis runs,
|
|
# so the anchor's runtime is a bare machine's: it trusts loopback and nothing else.
|
|
#
|
|
# Two machines on one public segment, both with a way out — the installer pulls the store, the bus and the
|
|
# registry over it, as a bare machine does:
|
|
# - anchor: the machine genesis raises, given its registry at its own address, 192.0.2.10:5000;
|
|
# - forge: serves the control plane's repository at the commit under test over git's own protocol, so the
|
|
# installer builds exactly that and nothing on the workstation listens for the lab. On the anchor
|
|
# itself it would be a listener, and genesis refuses a machine something already listens on.
|
|
scenario: genesis-untrusted
|
|
|
|
segments:
|
|
hosting:
|
|
kind: public
|
|
cidr: [192.0.2.0/24]
|
|
|
|
machines:
|
|
anchor:
|
|
at: { segment: hosting, address: [192.0.2.10] }
|
|
egress: true
|
|
inbound: allow
|
|
# Genesis-single's anchor: the foundation, the registry, and two control planes during the pivot.
|
|
memory: 8GiB
|
|
cpus: 4
|
|
disk: 40GiB
|
|
|
|
forge:
|
|
at: { segment: hosting, address: [192.0.2.30] }
|
|
egress: true
|
|
inbound: allow
|
|
memory: 2GiB
|
|
cpus: 2
|
|
disk: 15GiB
|
|
|
|
place:
|
|
all: [host, runtime]
|