diff --git a/dl-kubevirt-image.sh b/dl-kubevirt-image.sh new file mode 100644 index 0000000..cc0e931 --- /dev/null +++ b/dl-kubevirt-image.sh @@ -0,0 +1,50 @@ +#!/bin/bash +set -e + +# ------------------------------ +# 配置区 +# ------------------------------ +# KubeVirt 版本(例如 v0.90.1) +KUBEVIRT_VERSION="v{{ kubevirt.version }}" + +# 下载目录 +DOWNLOAD_DIR="/tmp/kubevirt-images" +mkdir -p "$DOWNLOAD_DIR" + +# quay.io 登录信息 +QUAY_USERNAME="safecorner+safecorner" +QUAY_PASSWORD="9J4BXPCG0FY25P9KL8XYDIAH5V9GXAQKYCUKOE5QI2N5WIFWA0ZB914D0MNZXRCQ" + +# ------------------------------ +# 自动解析官方 release YAML 获取镜像列表 +# ------------------------------ +echo "Fetching KubeVirt release YAML..." +RELEASE_YAML_URL="https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-${KUBEVIRT_VERSION}.yaml" +IMAGE_LIST=$(curl -sL "$RELEASE_YAML_URL" | grep "image:" | awk '{print $2}' | sort -u) + +if [ -z "$IMAGE_LIST" ]; then + echo "Error: No images found in release YAML." + exit 1 +fi + +echo "Found $(echo "$IMAGE_LIST" | wc -l) images." + +# ------------------------------ +# 下载镜像 +# ------------------------------ +for img in $IMAGE_LIST; do + IMAGE_NAME=$(basename "$img") + # 替换 : / 等特殊字符,保证 tar 文件名合法 + SAFE_NAME=$(echo "$IMAGE_NAME" | tr '/:' '_') + TAR_FILE="${DOWNLOAD_DIR}/${SAFE_NAME}.tar" + + echo "Downloading $img -> $TAR_FILE" + skopeo copy --src-creds "$QUAY_USERNAME:$QUAY_PASSWORD" \ + "docker://$img" "docker-archive:${TAR_FILE}" || { + echo "Failed to download $img, skipping..." + continue + } +done + +echo "All images downloaded to $DOWNLOAD_DIR" +