50 lines
1.2 KiB
Bash
Executable file
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"
|