deploy: move the wireguard mesh out of the namespace hives read
`swarm.*` is what a hive needs to be a *client* of the swarm; the mesh is none of it. A peer needs this host's `wireguardEndpoint` -- the roster entry in swarm.nix, which stays -- and nothing about the interface this host brings up. The module already said so: "plain host networking that a machine which runs no hive at all still needs." All five options move, so the namespace relocates rather than splitting. `listenPort` is the one that reads the other way: it is what this host *binds*, while the port a peer *dials* lives inside `wireguardEndpoint`. Declared in swarm-wireguard.nix under the `deploy.*` path, following swarm-victorialogs.nix; deploy.nix carries only the renames, per its own "a single file to delete when the deprecation window closes". Deliberately NOT added to deploy.nix's own options block: every entry there is a swarm service this host deploys, and the mesh is host networking. hivectl/src/wg.rs generates the config snippet an operator pastes, so it moves too -- otherwise the tool's own output trips the deprecation warning. module-eval gains a case that configures a host through the OLD path and asserts the rendered wg-hive interface, because the new path evaluates fine without the shim: dropping it reads as a clean tree.
This commit is contained in:
parent
c7c221baeb
commit
368f5d82aa
10 changed files with 85 additions and 27 deletions
|
|
@ -62,6 +62,16 @@ let
|
|||
bare = hive { };
|
||||
withCi = hive { deploy.forgejo.ci.enable = true; };
|
||||
|
||||
# A host configured against the pre-rename option path. `mkRenamedOptionModule`
|
||||
# is the only thing carrying it, and nothing else in this suite would notice
|
||||
# if it were dropped: the new path evaluates fine on its own, so a missing
|
||||
# shim reads as a clean tree and breaks every existing operator config.
|
||||
wireguardOldPath = hive {
|
||||
swarm.wireguard.enable = true;
|
||||
swarm.wireguard.address = "10.100.0.1/24";
|
||||
swarm.wireguard.privateKeyFile = "/etc/wireguard/hive.key";
|
||||
};
|
||||
|
||||
baoPkcs11 = hive {
|
||||
deploy.bao.enable = true;
|
||||
deploy.bao.seal = "pkcs11";
|
||||
|
|
@ -183,6 +193,18 @@ let
|
|||
name = "the all-local mode turns the swarm controller on";
|
||||
ok = allLocal.services.hyperhive.deploy.swarm-controller.enable;
|
||||
}
|
||||
{
|
||||
# The mesh moved namespace wholesale, so an existing config sets paths
|
||||
# that no longer exist. Reading the *rendered interface* rather than the
|
||||
# option: a rename that resolved but stopped reaching the module would
|
||||
# satisfy an option-level check and still bring up no tunnel.
|
||||
name = "a config written against the pre-rename wireguard path still configures the interface";
|
||||
ok =
|
||||
let
|
||||
wg = wireguardOldPath.networking.wireguard.interfaces.wg-hive;
|
||||
in
|
||||
wg.ips == [ "10.100.0.1/24" ] && wg.privateKeyFile == "/etc/wireguard/hive.key";
|
||||
}
|
||||
{
|
||||
# The gateway's per-name issuer choice. If this ever collapses to a
|
||||
# constant, every swarm-service vhost serves a certificate its CA
|
||||
|
|
|
|||
Loading…
Reference in a new issue