mirror of
https://github.com/siderolabs/talos.git
synced 2026-05-05 20:36:18 +02:00
NVIDIA extensions test with UKI boot. Fixes: #11397 Signed-off-by: Noel Georgi <git@frezbo.dev> (cherry picked from commit 3ba35c9b9fca9c54e596d5c6df61d515a4a39555)
94 lines
4.0 KiB
Bash
Executable File
94 lines
4.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -eou pipefail
|
|
|
|
source ./hack/test/e2e.sh
|
|
|
|
REGION="us-east-1"
|
|
|
|
ARCH="${TARGET_ARCH:-amd64}"
|
|
|
|
function cloud_image_upload() {
|
|
RANDOM_SUFFIX=$(openssl rand -hex 4)
|
|
|
|
CLOUD_IMAGES_EXTRA_ARGS=("--name-prefix=${1}-${RANDOM_SUFFIX}" "--target-clouds=aws" "--architectures=${ARCH}" "--aws-regions=${REGION}")
|
|
|
|
make cloud-images CLOUD_IMAGES_EXTRA_ARGS="${CLOUD_IMAGES_EXTRA_ARGS[*]}"
|
|
}
|
|
|
|
function get_ami_id() {
|
|
jq -r ".[] | select(.cloud == \"aws\") | select(.region == \"${REGION}\") | select (.arch == \"${ARCH}\") | .id" "${ARTIFACTS}/cloud-images.json"
|
|
}
|
|
|
|
function cloud_image_upload_with_extensions() {
|
|
case "${1}" in
|
|
nvidia-oss-lts)
|
|
EXTENSIONS=$(jq -R < "${EXTENSIONS_METADATA_FILE}" | jq -rs 'map(select(. | (contains("nvidia-open-gpu-kernel-modules-lts") or contains("nvidia-container-toolkit-lts")) and (contains("nvidia-fabricmanager") or contains("nonfree-kmod-nvidia") | not))) | .[] |= "--system-extension-image=" + . | join(" ")')
|
|
;;
|
|
nvidia-oss-production)
|
|
EXTENSIONS=$(jq -R < "${EXTENSIONS_METADATA_FILE}" | jq -rs 'map(select(. | (contains("nvidia-open-gpu-kernel-modules-production") or contains("nvidia-container-toolkit-production")) and (contains("nvidia-fabricmanager") or contains("nonfree-kmod-nvidia") | not))) | .[] |= "--system-extension-image=" + . | join(" ")')
|
|
;;
|
|
nvidia-oss-fabricmanager)
|
|
EXTENSIONS=$(jq -R < "${EXTENSIONS_METADATA_FILE}" | jq -rs 'map(select(. | (contains("nvidia-open-gpu-kernel-modules-production") or contains("nvidia-container-toolkit-production")) and (contains("nonfree-kmod-nvidia") | not))) | .[] |= "--system-extension-image=" + . | join(" ")')
|
|
;;
|
|
nvidia-nonfree-lts)
|
|
EXTENSIONS=$(jq -R < "${EXTENSIONS_METADATA_FILE}" | jq -rs 'map(select(. | (contains("nonfree-kmod-nvidia-lts") or contains("nvidia-container-toolkit-lts")) and (contains("nvidia-fabricmanager") or contains("nvidia-open-gpu-kernel-modules") | not))) | .[] |= "--system-extension-image=" + . | join(" ")')
|
|
;;
|
|
nvidia-nonfree-production)
|
|
EXTENSIONS=$(jq -R < "${EXTENSIONS_METADATA_FILE}" | jq -rs 'map(select(. | (contains("nonfree-kmod-nvidia-production") or contains("nvidia-container-toolkit-production")) and (contains("nvidia-fabricmanager") or contains("nvidia-open-gpu-kernel-modules") | not))) | .[] |= "--system-extension-image=" + . | join(" ")')
|
|
;;
|
|
nvidia-nonfree-fabricmanager)
|
|
EXTENSIONS=$(jq -R < "${EXTENSIONS_METADATA_FILE}" | jq -rs 'map(select(. | (contains("nonfree-kmod-nvidia-lts") or contains("nvidia-container-toolkit-lts")) and (contains("nvidia-open-gpu-kernel-modules") | not))) | .[] |= "--system-extension-image=" + . | join(" ")')
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
make image-aws IMAGER_ARGS="${EXTENSIONS}" PLATFORM="linux/${ARCH}"
|
|
cloud_image_upload "talos-e2e-${1}"
|
|
}
|
|
|
|
cloud_image_upload "talos-e2e"
|
|
|
|
AMI_ID=$(get_ami_id)
|
|
|
|
WORKER_GROUP=
|
|
NVIDIA_AMI_ID=
|
|
|
|
case "${E2E_AWS_TARGET:-default}" in
|
|
default)
|
|
;;
|
|
*)
|
|
WORKER_GROUP="nvidia"
|
|
cloud_image_upload_with_extensions "${E2E_AWS_TARGET}"
|
|
NVIDIA_AMI_ID=$(get_ami_id)
|
|
# cloud_image_upload_with_extensions "${E2E_AWS_TARGET}-fabricmanager"
|
|
# NVIDIA_FM_AMI_ID=$(get_ami_id)
|
|
;;
|
|
esac
|
|
|
|
mkdir -p "${ARTIFACTS}/e2e-aws-generated"
|
|
|
|
NAME_PREFIX="${SHA}-${E2E_AWS_TARGET}-${ARCH}"
|
|
|
|
AWS_JQ_TEMPLATE="aws-${ARCH}.jq"
|
|
|
|
jq --null-input \
|
|
--arg WORKER_GROUP "${WORKER_GROUP}" \
|
|
--arg AMI_ID "${AMI_ID}" \
|
|
--arg NVIDIA_AMI_ID "${NVIDIA_AMI_ID}" \
|
|
--arg CLUSTER_NAME "${NAME_PREFIX}" \
|
|
--arg TALOS_VERSION_CONTRACT "${TALOS_VERSION}" \
|
|
--arg KUBERNETES_VERSION "${KUBERNETES_VERSION}" \
|
|
'{
|
|
worker_group: $WORKER_GROUP,
|
|
ami_id: $AMI_ID,
|
|
nvidia_ami_id: $NVIDIA_AMI_ID,
|
|
cluster_name: $CLUSTER_NAME,
|
|
talos_version_contract: $TALOS_VERSION_CONTRACT,
|
|
kubernetes_version: $KUBERNETES_VERSION
|
|
}' \
|
|
| jq -f "hack/test/tfvars/${AWS_JQ_TEMPLATE}" > "${ARTIFACTS}/e2e-aws-generated/vars.json"
|
|
|
|
cp hack/test/tfvars/*.yaml "${ARTIFACTS}/e2e-aws-generated"
|