From 4318d132a8b0fcd4f207a4a40c6621d6a9086bad Mon Sep 17 00:00:00 2001 From: Alexander Lutay Date: Tue, 26 Sep 2017 09:24:39 +0200 Subject: [PATCH] TT#22415 Retry connect to public GPG keyserver in case of random failures It looks like public GPG keyservers are not really highly available, and randomly there are some issues have happens, like: > gpg: requesting key EF8D349F from hkp server pool.sks-keyservers.net > ?: [fd 4]: read error: Connection reset by peer > gpgkeys: HTTP fetch error 7: couldn't connect: eof > gpg: no valid OpenPGP data found. Lets add reconnect here, to retry within one minute to hide such kind of issues which are out of our control.. Change-Id: Ia31488bf0318656fadde1ca8bd43c6c48d5cb5a6 --- deployment.sh | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/deployment.sh b/deployment.sh index 804ef08..0471542 100644 --- a/deployment.sh +++ b/deployment.sh @@ -1354,9 +1354,16 @@ else echo "Fetching debootstrap keyring as GPG key '${GPG_KEY}'..." logit "Fetching debootstrap keyring as GPG key '${GPG_KEY}'..." - if ! gpg --keyserver "${GPG_KEY_SERVER}" --recv-keys "${GPG_KEY}" ; then - die "Failed to fetch GPG key '${GPG_KEY}' from '${GPG_KEY_SERVER}'" - fi + TRY=60 + while ! gpg --keyserver "${GPG_KEY_SERVER}" --recv-keys "${GPG_KEY}" ; do + if [ ${TRY} -gt 0 ] ; then + TRY=$((TRY-5)) + echo "Waiting for gpg keyserver '${GPG_KEY_SERVER}' availability ($TRY seconds)..." + sleep 5 + else + die "Failed to fetch GPG key '${GPG_KEY}' from '${GPG_KEY_SERVER}'" + fi + done if ! gpg -a --export "${GPG_KEY}" | apt-key add - ; then die "Failed to import GPG key '${GPG_KEY}' as apt-key" @@ -2408,9 +2415,17 @@ deb ${DEBIAN_REPO_TRANSPORT}://${DEBIAN_REPO_HOST}/puppetlabs/ ${DEBIAN_RELEASE} EOF PUPPET_GPG_KEY="6F6B15509CF8E59E6E469F327F438280EF8D349F" - if ! chroot ${TARGET} apt-key adv --recv-keys --keyserver "${GPG_KEY_SERVER}" "${PUPPET_GPG_KEY}" ; then - die "Failed to fetch GPG key '${PUPPET_GPG_KEY}' from '${GPG_KEY_SERVER}'" - fi + + TRY=60 + while ! chroot ${TARGET} apt-key adv --recv-keys --keyserver "${GPG_KEY_SERVER}" "${PUPPET_GPG_KEY}" ; do + if [ ${TRY} -gt 0 ] ; then + TRY=$((TRY-5)) + echo "Waiting for gpg keyserver '${GPG_KEY_SERVER}' availability ($TRY seconds)..." + sleep 5 + else + die "Failed to fetch GPG key '${PUPPET_GPG_KEY}' from '${GPG_KEY_SERVER}'" + fi + done chroot ${TARGET} apt-get update chroot ${TARGET} apt-get -y install puppet-agent openssh-server lsb-release ntpdate