outlast openbao's cold restart in the agent ca unit's start limit
This commit is contained in:
parent
8d31f0ad27
commit
c273527219
2 changed files with 21 additions and 3 deletions
|
|
@ -59,6 +59,9 @@ let
|
||||||
openbaoStartSec = 240;
|
openbaoStartSec = 240;
|
||||||
containerStartSec = openbaoStartSec + 60;
|
containerStartSec = openbaoStartSec + 60;
|
||||||
|
|
||||||
|
# systemd's default stop limit, which bounds the stop half of a restart.
|
||||||
|
openbaoStopSec = 90;
|
||||||
|
|
||||||
# Upstream's own default, kept so its documentation matches. The raft data
|
# Upstream's own default, kept so its documentation matches. The raft data
|
||||||
# lives INSIDE the container on `ephemeral = false`, the same way
|
# lives INSIDE the container on `ephemeral = false`, the same way
|
||||||
# ./swarm-grafana.nix keeps its sqlite database — no sibling service binds
|
# ./swarm-grafana.nix keeps its sqlite database — no sibling service binds
|
||||||
|
|
@ -3950,9 +3953,10 @@ in
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartSec = 30;
|
RestartSec = 30;
|
||||||
# An attempt may generate a 4096-bit RSA root and then wait on a
|
# An attempt may generate a 4096-bit RSA root and then wait on a
|
||||||
# blocking restart of openbao: its stop and its start, 90s each by
|
# blocking restart of openbao: its stop (`openbaoStopSec`) and its
|
||||||
# systemd's defaults.
|
# start (`openbaoStartSec`), plus 120s for the key generation and
|
||||||
TimeoutStartSec = "5min";
|
# the calls around it. 90 + 240 + 120 = 450s.
|
||||||
|
TimeoutStartSec = "${toString (openbaoStopSec + openbaoStartSec + 120)}s";
|
||||||
};
|
};
|
||||||
script = ''
|
script = ''
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
|
||||||
|
|
@ -255,6 +255,20 @@ let
|
||||||
&& !(lib.hasInfix "certificate=@${tlsDir}/listener-client-ca.pem" scripts)
|
&& !(lib.hasInfix "certificate=@${tlsDir}/listener-client-ca.pem" scripts)
|
||||||
&& !(lib.hasInfix "certificate=@${tlsDir}/agent-ca.pem" scripts);
|
&& !(lib.hasInfix "certificate=@${tlsDir}/agent-ca.pem" scripts);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
# The unit's blocking `systemctl restart openbao.service` stops (90 s)
|
||||||
|
# then starts openbao (240 s), so its own limit must exceed both or a
|
||||||
|
# slow cold open kills the job mid-restart. Control: openbao's own limit
|
||||||
|
# is read from the same container, so a wrong path fails the 240 arm.
|
||||||
|
name = "the agent CA unit's start limit outlasts the restart of openbao it waits on";
|
||||||
|
ok =
|
||||||
|
let
|
||||||
|
limit = lib.toInt (
|
||||||
|
lib.removeSuffix "s" baoPkcs11.systemd.services.swarm-bao-agent-pki.serviceConfig.TimeoutStartSec
|
||||||
|
);
|
||||||
|
in
|
||||||
|
(baoUnits baoPkcs11).openbao.serviceConfig.TimeoutStartSec == 240 && limit >= 90 + 240 + 60;
|
||||||
|
}
|
||||||
{
|
{
|
||||||
# Both writers compose the bundle through one function, which refuses
|
# Both writers compose the bundle through one function, which refuses
|
||||||
# a result that does not begin with the store CA and replaces the file
|
# a result that does not begin with the store CA and replaces the file
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue