mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-22 15:11:07 +02:00
85 lines
2.2 KiB
Bash
85 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
set -e
|
|
|
|
fail() {
|
|
echo "$1" 1>&2
|
|
exit 1
|
|
}
|
|
|
|
[[ -z "${PACKAGE_MANAGER}" ]] && fail "PACKAGE_MANAGER env variable has not been set"
|
|
[[ -z "${RETRY_INTERVAL}" ]] && fail "RETRY_INTERVAL env variable has not been set"
|
|
[[ -z "${TIMEOUT_SECONDS}" ]] && fail "TIMEOUT_SECONDS env variable has not been set"
|
|
|
|
# Add any repositories that have have been passed in
|
|
add_repos() {
|
|
# If we don't have any repos on the list for this distro, no action needed.
|
|
if [ ${#DISTRO_REPOS[@]} -lt 1 ]; then
|
|
echo "DISTRO_REPOS is empty; No repos required for the packages for this Linux distro."
|
|
return 0
|
|
fi
|
|
|
|
case $PACKAGE_MANAGER in
|
|
apt)
|
|
# NOTE: We do not currently add any apt repositories in our scenarios. I suspect if that time
|
|
# comes we'll need to add support for apt-key here.
|
|
for repo in ${DISTRO_REPOS}; do
|
|
if [ "$repo" == "__none" ]; then
|
|
continue
|
|
fi
|
|
sudo add-apt-repository "${repo}"
|
|
done
|
|
;;
|
|
dnf)
|
|
for repo in ${DISTRO_REPOS}; do
|
|
if [ "$repo" == "__none" ]; then
|
|
continue
|
|
fi
|
|
sudo dnf install -y "${repo}"
|
|
sudo dnf makecache -y
|
|
done
|
|
;;
|
|
yum)
|
|
for repo in ${DISTRO_REPOS}; do
|
|
if [ "$repo" == "__none" ]; then
|
|
continue
|
|
fi
|
|
sudo yum install -y "${repo}"
|
|
sudo yum makecache -y
|
|
done
|
|
;;
|
|
zypper)
|
|
# Add each repo
|
|
for repo in ${DISTRO_REPOS}; do
|
|
if [ "$repo" == "__none" ]; then
|
|
continue
|
|
fi
|
|
if sudo zypper lr "${repo}"; then
|
|
echo "A repo named ${repo} already exists, skipping..."
|
|
continue
|
|
fi
|
|
sudo zypper --gpg-auto-import-keys --non-interactive addrepo "${repo}"
|
|
done
|
|
sudo zypper --gpg-auto-import-keys ref
|
|
sudo zypper --gpg-auto-import-keys refs
|
|
;;
|
|
*)
|
|
fail "Unsupported package manager: ${PACKAGE_MANAGER}"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
begin_time=$(date +%s)
|
|
end_time=$((begin_time + TIMEOUT_SECONDS))
|
|
while [ "$(date +%s)" -lt "$end_time" ]; do
|
|
if add_repos; then
|
|
exit 0
|
|
fi
|
|
|
|
sleep "$RETRY_INTERVAL"
|
|
done
|
|
|
|
fail "Timed out waiting for distro repos to be set up"
|