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