|
|
|
@ -37,10 +37,7 @@ export VAULT_TOKEN=${VAULT_TOKEN}
|
|
|
|
|
|
|
|
|
|
# login to Vault
|
|
|
|
|
printf "🔑 Logging in to Vault ...\n\n"
|
|
|
|
|
vault login -address=${VAULT_ADDR} -no-print ${VAULT_TOKEN}
|
|
|
|
|
|
|
|
|
|
# Add VAULT_ADDR to /ect/environment file to persist the environment variable
|
|
|
|
|
echo "VAULT_ADDR=${VAULT_ADDR}" | sudo tee -a /etc/environment
|
|
|
|
|
vault login -no-print ${VAULT_TOKEN}
|
|
|
|
|
|
|
|
|
|
# Verify Vault address and token
|
|
|
|
|
printf "🔎 Verifying Vault address and token ...\n\n"
|
|
|
|
@ -51,39 +48,14 @@ if [ "${SECRETS}" = "{}" ]; then
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
printf "\n🔑 Fetching secrets ...\n\n"
|
|
|
|
|
|
|
|
|
|
# Check if jq is installed
|
|
|
|
|
if ! command -v jq >/dev/null; then
|
|
|
|
|
echo "jq is not installed. Please install jq to automatically set the secrets."
|
|
|
|
|
echo "You can manually set the secrets by using the following command in your workspace:"
|
|
|
|
|
echo "vault kv get <path>"
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo "${SECRETS}"
|
|
|
|
|
# Decode the JSON string to a temporary file
|
|
|
|
|
echo "${SECRETS}" | jq '.' > temp.json
|
|
|
|
|
|
|
|
|
|
# Iterate through the keys and values in the JSON file
|
|
|
|
|
for key in $(jq -r 'keys[]' temp.json); do
|
|
|
|
|
path=$(echo $key | tr -d \")
|
|
|
|
|
# Fetch the secrets from Vault
|
|
|
|
|
secrets=$(vault kv get -format=json $path)
|
|
|
|
|
# Get the array of secret names from the JSON file
|
|
|
|
|
sceret_names=$(jq -r ".$key[]" temp.json)
|
|
|
|
|
# Convert the list of environment variables to an array
|
|
|
|
|
IFS=', ' read -r -a sceret_array <<< "$sceret_names"
|
|
|
|
|
# Set the environment variables with the secret values
|
|
|
|
|
for secret_name in "$${sceret_array[@]}"; do
|
|
|
|
|
# Remove quotes from the variable name
|
|
|
|
|
secret_name=$(echo $secret_name | tr -d \")
|
|
|
|
|
secret_value=$(echo $secrets | jq -r ".data.data.$secret_name")
|
|
|
|
|
export $secret_name=$secret_value
|
|
|
|
|
printf "🔍 Fetching secrets ...\n\n"
|
|
|
|
|
for key in $(echo "${SECRETS}" | jq -r "keys[]" ); do
|
|
|
|
|
secrets=$(echo "${SECRETS}" | jq -r ".$key.secrets[]")
|
|
|
|
|
file=$(echo "${SECRETS}" | jq -r ".$key.file")
|
|
|
|
|
printf "Fetching secrets from $${key} ...\n"
|
|
|
|
|
for secret in $${secrets}; do
|
|
|
|
|
value=$(vault kv get -format=json $${key} | jq -r ".data.data.$${secret}")
|
|
|
|
|
printf "$${secret}=$${value}\n" >> $${file}
|
|
|
|
|
done
|
|
|
|
|
printf "\n"
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Remove the temporary file
|
|
|
|
|
rm temp.json
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|