diff options
author | Alexander Smolyakov <v-asmoliakov@microsoft.com> | 2023-10-04 20:00:11 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-04 20:00:11 +0300 |
commit | 90a9b1d6044235ab84af99922cb45b7e3093f4cd (patch) | |
tree | d355f2b3537cfcd0e33a2934d8841612b4035473 | |
parent | c3f9105048bf96b51c321f665bdc7990fdd4fc1e (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
-rw-r--r-- | src/terraform/devcontainer-feature.json | 2 | ||||
-rwxr-xr-x | src/terraform/install.sh | 21 |
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 |