Files
pxe-server/tests/vm/fetch-iso.sh
2026-10-15 09:52:08 -04:00

38 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# Download the Ubuntu live-server ISO into the cache and verify it against
# the release's SHA256SUMS. Idempotent: a verified ISO is not re-fetched.
#
# Usage: tests/vm/fetch-iso.sh
# Env: PXETEST_CACHE, UBUNTU_ISO_NAME (default ubuntu-24.04.5-live-server-amd64.iso)
source "$(dirname "$0")/common.sh"
mkdir -p "$PXETEST_CACHE"
cd "$PXETEST_CACHE"
log "fetching $UBUNTU_RELEASE_URL/SHA256SUMS"
curl -fsSL -m 60 -o SHA256SUMS.new "$UBUNTU_RELEASE_URL/SHA256SUMS" \
|| die "could not download SHA256SUMS (proxy? offline?)"
mv SHA256SUMS.new SHA256SUMS
if ! grep -q "[ *]$UBUNTU_ISO_NAME\$" SHA256SUMS; then
log "available live-server ISOs:"
grep live-server SHA256SUMS | sed 's/^/ /'
die "$UBUNTU_ISO_NAME is not in SHA256SUMS; set UBUNTU_ISO_NAME"
fi
verify() { grep "[ *]$UBUNTU_ISO_NAME\$" SHA256SUMS | sha256sum -c --status; }
if [ -f "$UBUNTU_ISO_NAME" ] && verify; then
log "ISO already present and verified: $UBUNTU_ISO"
exit 0
fi
log "downloading $UBUNTU_RELEASE_URL/$UBUNTU_ISO_NAME (resumable)"
curl -fsSL -C - --retry 3 -o "$UBUNTU_ISO_NAME" "$UBUNTU_RELEASE_URL/$UBUNTU_ISO_NAME" \
|| die "ISO download failed (proxy? offline?)"
if ! verify; then
rm -f "$UBUNTU_ISO_NAME"
die "SHA256 mismatch for $UBUNTU_ISO_NAME (deleted; run again)"
fi
log "ISO verified: $UBUNTU_ISO"