linderhof/.envrc

34 lines
1.3 KiB
Text
Raw Normal View History

# Stack selection — set LINDERHOF_STACK before sourcing, or create a .stack file
watch_file .stack
if [[ -z "${LINDERHOF_STACK:-}" ]]; then
if [[ -f "$PWD/.stack" ]]; then
LINDERHOF_STACK="$(cat "$PWD/.stack")"
echo "linderhof: LINDERHOF_STACK is set to '$LINDERHOF_STACK'"
fi
fi
if [[ -z "${LINDERHOF_STACK:-}" ]]; then
echo "linderhof: LINDERHOF_STACK is not set" >&2
echo " new here? run: ./setup.sh" >&2
echo " existing stack? run: echo <stack-name> > .stack" >&2
else
export LINDERHOF_STACK
export LINDERHOF_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/linderhof/$LINDERHOF_STACK"
export ANSIBLE_INVENTORY="$LINDERHOF_DIR/hosts.yml"
export ANSIBLE_VAULT_PASSWORD_FILE="$LINDERHOF_DIR/vault-pass"
# Extract HCLOUD_TOKEN from vault for hcloud CLI and Ansible modules
if [[ -f "$LINDERHOF_DIR/vault-pass" && -f "$LINDERHOF_DIR/group_vars/all/vault.yml" ]]; then
HCLOUD_TOKEN="$(ansible-vault view "$LINDERHOF_DIR/group_vars/all/vault.yml" \
--vault-password-file "$LINDERHOF_DIR/vault-pass" 2>/dev/null \
| grep '^hcloud_token:' | sed 's/^hcloud_token: *"\?\(.*\)$/\1/; s/"$//')"
export HCLOUD_TOKEN
fi
# Per-stack overrides: DOCKER_HOST, etc. — written by setup.sh
if [[ -f "$LINDERHOF_DIR/stack.env" ]]; then
# shellcheck source=/dev/null
source "$LINDERHOF_DIR/stack.env"
fi
fi