feat(nix): require swarm.domain and hiveName
Neither has a fallback worth having: a guessed swarm domain is a wrong hostname that evaluates cleanly and deploys, which is worse than an eval failure naming the one line an operator has to write. Upgrading past this sets both, once. Requiring them also makes the hive domain fully derived rather than merely derivable — `<hiveName>.<swarm.domain>` now always resolves, so an operator writes the swarm's address and this hive's label and never writes the hive domain at all. `hiveName` stops being display-only in the process: it is the leftmost label of the domain the hive is addressed by, which the option text and docs now say. Each of the three required options asserts separately, so a missing one names itself. A missing `swarm.domain` legitimately fails two of them — its own, and `domain`, which can no longer derive — and nix reports all failing assertions together, so the operator sees the whole set rather than one at a time.
This commit is contained in:
parent
747f405c6f
commit
fbf3757551
3 changed files with 63 additions and 34 deletions
|
|
@ -178,6 +178,29 @@ in
|
|||
`<hiveName>.<swarm.domain>`.
|
||||
'';
|
||||
}
|
||||
{
|
||||
assertion = config.services.hyperhive.swarm.domain != null;
|
||||
message = ''
|
||||
hyperhive requires services.hyperhive.swarm.domain to be
|
||||
set — the DNS domain of the swarm this hive belongs to,
|
||||
of which this hive occupies one sub-domain. There is no
|
||||
fallback: a guessed value would be a wrong hostname that
|
||||
evaluates cleanly and deploys. Set it
|
||||
(`services.hyperhive.swarm.domain = "example.com";`) —
|
||||
with `hiveName` it also derives
|
||||
`services.hyperhive.domain` for you.
|
||||
'';
|
||||
}
|
||||
{
|
||||
assertion = config.services.hyperhive.hiveName != null;
|
||||
message = ''
|
||||
hyperhive requires services.hyperhive.hiveName to be set —
|
||||
it is this hive's label within the swarm, and the leftmost
|
||||
part of the domain it is addressed by
|
||||
(`<hiveName>.<swarm.domain>`), not only a display name.
|
||||
Set it (`services.hyperhive.hiveName = "pr1ma";`).
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
# Virtual bridge — each agent container attaches a veth pair (isolation
|
||||
|
|
|
|||
Loading…
Reference in a new issue