cfg/bin/local-vault-auth
Knut Ahlers efc8bc4f3c
Throw shfmt against bash scripts
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2018-03-10 12:47:55 +01:00

50 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
function require_gotool() {
toolname=$(basename $1)
if ! (which ${toolname} >/dev/null 2>&1); then
go version || {
echo "${basename} not found and no usable go environment"
exit 1
}
go get -u $1
fi
}
require_gotool github.com/Luzifer/vault-user-token
source "${HOME}/.config/vault-user-token"
source "${HOME}/bin/script_framework.sh"
# Check whether a valid token is available
(vault token-lookup >/dev/null 2>&1) && exit 0
step "Vault is not authenticated, trying to authenticate... "
# Remove old, invalid token
rm -f "${HOME}/.vault-token"
VUT=$(pgrep -f vault-user-token || echo "" | xargs)
[ -n "$VUT" ] && {
step "Killing old vault-user-token processes..."
kill ${VUT}
}
# Start new vault-user-token daemon
vault-user-token --full-hostname=false >/dev/null 2>&1 &
VUT=$!
step "Waiting for token to become available..."
while ! [ -f "${HOME}/.vault-token" ]; do
# Give the program a moment to get a token
sleep 0.5
if ! (kill -0 $VUT); then
fail "vault-user-token exitted, giving up."
fi
done
(vault token-lookup >/dev/null 2>&1) || fail "Vault authentication failed finally"
success "Vault token became available and is valid"