Загрузка данных


084da66a795a:~$ file /usr/local/bin/vault-wrapper
bash: file: command not found
084da66a795a:~$ ls -lah /usr/local/bin/vault-wrapper
-rwxrwxrwx    1 root     root        1.1K Jun  4 07:09 /usr/local/bin/vault-wrapper
084da66a795a:~$ head -100 /usr/local/bin/vault-wrapper
#!/usr/bin/env bash

set -euo pipefail

## https://stackoverflow.com/a/59592881
# SYNTAX:
#   catch STDOUT_VARIABLE STDERR_VARIABLE COMMAND
catch() {
    set +e
    {
        _ERRNO_=
        IFS=$'\n' read -r -d '' "${1}";
        IFS=$'\n' read -r -d '' "${2}";
        (IFS=$'\n' read -r -d '' _ERRNO_; return ${_ERRNO_});
    } < <((printf '\0%s\0%d\0' "$(((({ ${3}; echo "${?}" 1>&3-; } | tr -d '\0' 1>&4-) 4>&2- 2>&1- | tr -d '\0' 1>&4-) 3>&1- | exit "$(cat)") 4>&1-)" "${?}" 1>&2) 2>&1)
}

VAULT_SECRET="$1"
if [ -z "$VAULT_SECRET" ]; then
    echo "error: please provide path to vault secret"
    exit 10
fi

VAULT_STDOUT=
VAULT_STDERR=
catch VAULT_STDOUT VAULT_STDERR "vault kv get -format=json $VAULT_SECRET"
VAULT_RC=$?

VAULT_DATA_RAW=
if [ $VAULT_RC -ne 0 ]; then
    if [[ "$VAULT_STDERR" == "No value found at"* ]]; then
        VAULT_DATA_RAW='{ "data": { "data": {} } }'
        VAULT_RC=0
    fi
    echo "$VAULT_STDERR" 1>&2
else
    VAULT_DATA_RAW="$VAULT_STDOUT"
fi

printf "%s" "$VAULT_DATA_RAW" | yq eval -M '.data.data' -
YQ_RC=$?

[ $VAULT_RC -ne 0 ] && exit $VAULT_RC
exit $YQ_RC
084da66a795a:~$