From c9fecbb7a211e2c47c6dde2354ebb612b94c7c07 Mon Sep 17 00:00:00 2001 From: Alexander Smolyakov Date: Wed, 4 Oct 2023 14:35:30 +0400 Subject: [PATCH 1/3] [terraform] Update retry logic - Add `dnsutils` package to dependencies - Update retry logic to handle DNS-related errors more gracefully --- src/terraform/install.sh | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/terraform/install.sh b/src/terraform/install.sh index 1156f6d41..5abcf8f03 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=$( resolve_ip_by_domain keyserver.ubuntu.com ) + 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 From 6069bb6c7da8da52dc0023eb524791bd68efa6fc Mon Sep 17 00:00:00 2001 From: Alexander Smolyakov Date: Wed, 4 Oct 2023 14:40:28 +0400 Subject: [PATCH 2/3] Update install.sh --- src/terraform/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/terraform/install.sh b/src/terraform/install.sh index 5abcf8f03..c1a382597 100755 --- a/src/terraform/install.sh +++ b/src/terraform/install.sh @@ -82,7 +82,7 @@ receive_gpg_keys() { if [ "${gpg_ok}" = "false" ]; then retry_count=0; echo "(*) Resolving GPG keyserver IP address..." - local keyserver_ip_address=$( resolve_ip_by_domain keyserver.ubuntu.com ) + 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" ]; From c15b5ffc87413824d8376874d6d200dc5159a967 Mon Sep 17 00:00:00 2001 From: Alexander Smolyakov Date: Wed, 4 Oct 2023 14:54:50 +0400 Subject: [PATCH 3/3] Bump version --- src/terraform/devcontainer-feature.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/terraform/devcontainer-feature.json b/src/terraform/devcontainer-feature.json index 119b4335e..51fb9a27a 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.",