diff --git a/dev/functions b/dev/functions index f9ee17d5a1a998df34640ae1f71d336abba7a2ab..286874f7e20670ae9fbcff55eca5eeddaced04ca 100644 --- a/dev/functions +++ b/dev/functions @@ -473,7 +473,7 @@ function tenks_deploy { install_venv "${TENKS_VENV_PATH}" "$tenks_path" source ${TENKS_VENV_PATH:-$HOME/tenks-test-venv}/bin/activate - ansible-galaxy install \ + ${KAYOBE_SOURCE_PATH}/tools/ansible-galaxy-retried.sh install \ --role-file="$tenks_path/requirements.yml" \ --roles-path="$tenks_path/ansible/roles/" diff --git a/tools/ansible-galaxy-retried.sh b/tools/ansible-galaxy-retried.sh new file mode 100755 index 0000000000000000000000000000000000000000..4082f98e23adc259c0fe377d392b14a8b85774ac --- /dev/null +++ b/tools/ansible-galaxy-retried.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +set -e + +GALAXY_RETRIES=${GALAXY_RETRIES:-3} + +for i in $(seq 1 $GALAXY_RETRIES); do + if ansible-galaxy "${@}"; then + exit 0 + fi + echo "Ansible Galaxy command failed. Retrying" +done + +echo "Failed to execute: ansible-galaxy ${@}" +exit 1 diff --git a/tox.ini b/tox.ini index 3c4a3bd72c78321c2344c5dc13971f37e8ef1590..0519802dc5d54c392e4498f2e6725b275b111a91 100644 --- a/tox.ini +++ b/tox.ini @@ -51,7 +51,7 @@ usedevelop = True sitepackages = True commands = # Install ansible role dependencies from Galaxy. - ansible-galaxy install \ + {toxinidir}/tools/ansible-galaxy-retried.sh install \ -r {toxinidir}/requirements.yml \ -p {toxinidir}/ansible/roles {toxinidir}/tools/test-ansible.sh {posargs} @@ -67,7 +67,7 @@ whitelist_externals = bash commands = # Install ansible role dependencies from Galaxy. - ansible-galaxy install \ + {toxinidir}/tools/ansible-galaxy-retried.sh install \ -r {toxinidir}/requirements.yml \ -p {toxinidir}/ansible/roles bash -c "source {envdir}/bin/activate && {toxinidir}/tools/test-molecule.sh {posargs}" @@ -80,7 +80,7 @@ commands = ansible-lint ansible/*.yaml basepython = python3 commands = # Install ansible role dependencies from Galaxy. - ansible-galaxy install \ + {toxinidir}/tools/ansible-galaxy-retried.sh install \ -r {toxinidir}/requirements.yml \ -p {toxinidir}/ansible/roles # Perform an Ansible syntax check. Skip some playbooks which require extra