Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backport of adding logic to handle cloud-init error code 2 into release/1.18.x #29001

Open
wants to merge 1 commit into
base: release/1.18.x
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 35 additions & 2 deletions enos/modules/install_packages/scripts/synchronize-repos.sh
Original file line number Diff line number Diff line change
Expand Up @@ -99,12 +99,45 @@ synchronize_repos() {
esac
}

# Function to check cloud-init status and retry on failure
# Before we start to modify repositories and install packages we'll wait for cloud-init to finish
# so it doesn't race with any of our package installations.
# We run as sudo becase Amazon Linux 2 throws Python 2.7 errors when running `cloud-init status` as
# We run as sudo because Amazon Linux 2 throws Python 2.7 errors when running `cloud-init status` as
# non-root user (known bug).
sudo cloud-init status --wait
wait_for_cloud_init() {
output=$(sudo cloud-init status --wait)
res=$?
case $res in
0)
return 0
;;
2)
{
echo "WARNING: cloud-init did not complete successfully but recovered."
echo "Exit code: $res"
echo "Output: $output"
echo "Here are the logs for the failure:"
cat /var/log/cloud-init-*
} 1>&2
return 0
;;
*)
{
echo "cloud-init did not complete successfully."
echo "Exit code: $res"
echo "Output: $output"
echo "Here are the logs for the failure:"
cat /var/log/cloud-init-*
} 1>&2
return 1
;;
esac
}

# Wait for cloud-init
wait_for_cloud_init

# Synchronizing repos
begin_time=$(date +%s)
end_time=$((begin_time + TIMEOUT_SECONDS))
while [ "$(date +%s)" -lt "$end_time" ]; do
Expand Down
Loading