aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexander Smolyakov <v-asmoliakov@microsoft.com>2023-10-04 20:00:11 +0300
committerGitHub <noreply@github.com>2023-10-04 20:00:11 +0300
commit90a9b1d6044235ab84af99922cb45b7e3093f4cd (patch)
treed355f2b3537cfcd0e33a2934d8841612b4035473 /src
parentc3f9105048bf96b51c321f665bdc7990fdd4fc1e (diff)
[terraform] Update retry logic to handle DNS-related errors more gracefully (#713)feature_terraform_1.3.5
* [terraform] Update retry logic - Add `dnsutils` package to dependencies - Update retry logic to handle DNS-related errors more gracefully * Update install.sh * Bump version
Diffstat (limited to 'src')
-rw-r--r--src/terraform/devcontainer-feature.json2
-rwxr-xr-xsrc/terraform/install.sh21
2 files changed, 21 insertions, 2 deletions
diff --git a/src/terraform/devcontainer-feature.json b/src/terraform/devcontainer-feature.json
index 119b433..51fb9a2 100644
--- a/src/terraform/devcontainer-feature.json
+++ b/src/terraform/devcontainer-feature.json
@@ -1,6 +1,6 @@
{
"id": "terraform",
- "version": "1.3.4",
+ "version": "1.3.5",
"name": "Terraform, tflint, and TFGrunt",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/terraform",
"description": "Installs the Terraform CLI and optionally TFLint and Terragrunt. Auto-detects latest version and installs needed dependencies.",
diff --git a/src/terraform/install.sh b/src/terraform/install.sh
index 1156f6d..c1a3825 100755
--- a/src/terraform/install.sh
+++ b/src/terraform/install.sh
@@ -77,6 +77,25 @@ receive_gpg_keys() {
sleep 10s
fi
done
+
+ # If all attempts fail, try getting the keyserver IP address and explicitly passing it to gpg
+ if [ "${gpg_ok}" = "false" ]; then
+ retry_count=0;
+ echo "(*) Resolving GPG keyserver IP address..."
+ local keyserver_ip_address=$( dig +short keyserver.ubuntu.com | head -n1 )
+ echo "(*) GPG keyserver IP address $keyserver_ip_address"
+
+ until [ "${gpg_ok}" = "true" ] || [ "${retry_count}" -eq "3" ];
+ do
+ echo "(*) Downloading GPG key..."
+ ( echo "${keys}" | xargs -n 1 gpg -q ${keyring_args} --recv-keys --keyserver ${keyserver_ip_address}) 2>&1 && gpg_ok="true"
+ if [ "${gpg_ok}" != "true" ]; then
+ echo "(*) Failed getting key, retring in 10s..."
+ (( retry_count++ ))
+ sleep 10s
+ fi
+ done
+ fi
set -e
if [ "${gpg_ok}" = "false" ]; then
echo "(!) Failed to get gpg key."
@@ -183,7 +202,7 @@ ensure_cosign() {
export DEBIAN_FRONTEND=noninteractive
# Install dependencies if missing
-check_packages curl ca-certificates gnupg2 dirmngr coreutils unzip
+check_packages curl ca-certificates gnupg2 dirmngr coreutils unzip dnsutils
if ! type git > /dev/null 2>&1; then
check_packages git
fi