granter role no-op deletes the dead bootstrap token
This commit is contained in:
parent
59456c3c58
commit
31670da795
3 changed files with 7 additions and 3 deletions
|
|
@ -45,8 +45,8 @@ refuses the token (expired, revoked, or missing the `bao-bootstrap` policy)
|
|||
makes it exit 4 and stay `failed` with the one-time step in its log; mint a
|
||||
fresh token or remove the file, then restart it. If the granter's own
|
||||
certificate login already works, the unit logs that the bootstrap token isn't
|
||||
needed and exits 0, so a stale file is harmless. A successful run deletes the
|
||||
token file.
|
||||
needed, deletes the dead token file and exits 0, so a stale file is harmless
|
||||
and the unit runs once. A successful run deletes the token file too.
|
||||
|
||||
After that, a new or changed `swarm-*` grant needs no operator step: the unit
|
||||
that writes it changes, and the deploy restarts it. A root step comes back only
|
||||
|
|
|
|||
|
|
@ -3186,11 +3186,13 @@ in
|
|||
# a host that finished bootstrap and kept the file. The
|
||||
# granter's own login is the proof. A fresh token still takes
|
||||
# the full path below, since the granter cannot read back its
|
||||
# own policy to compare it.
|
||||
# own policy to compare it. The refused token is dead,
|
||||
# so it is deleted here and the unit does not start again.
|
||||
if BAO_CLIENT_CERT=${lib.escapeShellArg baoDeploy.granterClientCertFile} \
|
||||
BAO_CLIENT_KEY=${lib.escapeShellArg baoDeploy.granterClientKeyFile} \
|
||||
bao login -method=cert -token-only >/dev/null 2>&1; then
|
||||
echo "granter role already in place; bootstrap token not needed"
|
||||
rm -f ${lib.escapeShellArg baoDeploy.bootstrapTokenFile}
|
||||
exit 0
|
||||
fi
|
||||
echo ${lib.escapeShellArg "the store is unsealed but refused the bootstrap token in ${baoDeploy.bootstrapTokenFile}: it has expired, been revoked, or does not carry the bao-bootstrap policy."} >&2
|
||||
|
|
|
|||
|
|
@ -1125,8 +1125,10 @@ let
|
|||
noop = "granter role already in place; bootstrap token not needed";
|
||||
del = "rm -f /run/secrets/bao-bootstrap.token";
|
||||
before = lib.head (lib.splitString "refused the bootstrap token" g);
|
||||
noopBranch = lib.head (lib.splitString "exit 0" (lib.last (lib.splitString noop g)));
|
||||
in
|
||||
lib.hasInfix noop before
|
||||
&& lib.hasInfix del noopBranch
|
||||
&& lib.hasInfix "bao login -method=cert -token-only" before
|
||||
&& lib.hasInfix "BAO_CLIENT_CERT=" before
|
||||
&& lib.hasInfix del g
|
||||
|
|
|
|||
Loading…
Reference in a new issue