From 08e70d9ea13e7d987322698852d9ccbe51ccd7e8 Mon Sep 17 00:00:00 2001 From: TinaMor Date: Tue, 16 Jul 2024 11:44:22 +0000 Subject: [PATCH] Add WS2025 SIG image - Adds commands for Windows Server 2025 SIG images - Adds Purchase Plan info for Azure Market Place Images --- images/capi/Makefile | 2 ++ images/capi/azure_targets.sh | 4 +-- images/capi/packer/azure/packer-windows.json | 5 ++++ images/capi/packer/azure/scripts/init-sig.sh | 25 +++++++++++++++++-- images/capi/packer/azure/scripts/init-vhd.sh | 11 ++++++++ .../packer/azure/windows-2025-containerd.json | 18 +++++++++++++ 6 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 images/capi/packer/azure/windows-2025-containerd.json diff --git a/images/capi/Makefile b/images/capi/Makefile index 5a64b7980..7eab90626 100644 --- a/images/capi/Makefile +++ b/images/capi/Makefile @@ -643,6 +643,7 @@ build-azure-sig-azurelinux-3: ## Builds Azure Linux 3 Azure managed image in Sha build-azure-sig-rhel-8: ## Builds RHEL 8 Azure managed image in Shared Image Gallery build-azure-sig-windows-2019-containerd: ## Builds Windows Server 2019 with containerd Azure managed image in Shared Image Gallery build-azure-sig-windows-2022-containerd: ## Builds Windows Server 2022 with containerd Azure managed image in Shared Image Gallery +build-azure-sig-windows-2025-containerd: ## Builds Windows Server 2025 with containerd Azure managed image in Shared Image Gallery build-azure-sig-windows-2019-containerd-cvm: ## Builds Windows Server 2019 with containerd CVM Azure managed image in Shared Image Gallery build-azure-sig-windows-2022-containerd-cvm: ## Builds Windows Server 2022 with containerd CVM Azure managed image in Shared Image Gallery build-azure-vhd-ubuntu-2004: ## Builds Ubuntu 20.04 VHD image for Azure @@ -871,6 +872,7 @@ validate-azure-sig-ubuntu-2204: ## Validates Ubuntu 22.04 Azure managed image in validate-azure-sig-ubuntu-2404: ## Validates Ubuntu 24.04 Azure managed image in Shared Image Gallery Packer config validate-azure-sig-windows-2019-containerd: ## Validate Windows Server 2019 with containerd Azure managed image in Shared Image Gallery Packer config validate-azure-sig-windows-2022-containerd: ## Validate Windows Server 2022 with containerd Azure managed image in Shared Image Gallery Packer config +validate-azure-sig-windows-2025-containerd: ## Validate Windows Server 2025 with containerd Azure managed image in Shared Image Gallery Packer config validate-azure-sig-windows-annual-containerd: ## Validate Windows Server Annual Channel with containerd Azure managed image in Shared Image Gallery Packer config validate-azure-vhd-centos-7: ## Validates CentOS 7 VHD image Azure Packer config validate-azure-vhd-mariner-2: ## Validates Azure Linux 2 VHD image Azure Packer config diff --git a/images/capi/azure_targets.sh b/images/capi/azure_targets.sh index 952fc26c7..2a4dd5825 100644 --- a/images/capi/azure_targets.sh +++ b/images/capi/azure_targets.sh @@ -1,7 +1,7 @@ VHD_TARGETS="ubuntu-2004 ubuntu-2204 ubuntu-2404 centos-7 mariner-2 azurelinux-3 rhel-8 windows-2019-containerd windows-2022-containerd" VHD_CI_TARGETS="ubuntu-2204 ubuntu-2404 mariner-2 windows-2019-containerd windows-2022-containerd" -SIG_TARGETS="ubuntu-2004 ubuntu-2204 ubuntu-2404 centos-7 mariner-2 azurelinux-3 rhel-8 windows-2019-containerd windows-2022-containerd flatcar" -SIG_CI_TARGETS="ubuntu-2204 ubuntu-2404 mariner-2 windows-2019-containerd windows-2022-containerd flatcar" +SIG_TARGETS="ubuntu-2004 ubuntu-2204 ubuntu-2404 centos-7 mariner-2 azurelinux-3 rhel-8 windows-2019-containerd windows-2022-containerd windows-2025-containerd flatcar" +SIG_CI_TARGETS="ubuntu-2204 ubuntu-2404 mariner-2 windows-2019-containerd windows-2022-containerd windows-2025-containerd flatcar" SIG_GEN2_TARGETS="ubuntu-2004 ubuntu-2204 ubuntu-2404 centos-7 mariner-2 azurelinux-3 flatcar" SIG_GEN2_CI_TARGETS="ubuntu-2204 ubuntu-2404 mariner-2 flatcar" SIG_CVM_TARGETS="ubuntu-2004 ubuntu-2204 ubuntu-2404 windows-2019-containerd windows-2022-containerd" diff --git a/images/capi/packer/azure/packer-windows.json b/images/capi/packer/azure/packer-windows.json index f2752409c..d9e7762c4 100644 --- a/images/capi/packer/azure/packer-windows.json +++ b/images/capi/packer/azure/packer-windows.json @@ -60,6 +60,11 @@ "name": "sig-{{user `build_name`}}", "os_disk_size_gb": "{{user `os_disk_size_gb`}}", "os_type": "Windows", + "plan_info": { + "plan_name": "{{user `plan_image_sku`}}", + "plan_product": "{{user `plan_image_offer`}}", + "plan_publisher": "{{user `plan_image_publisher`}}" + }, "private_virtual_network_with_public_ip": "{{user `private_virtual_network_with_public_ip`}}", "shared_gallery_image_version_exclude_from_latest": "{{ user `exclude_from_latest` }}", "shared_image_gallery": { diff --git a/images/capi/packer/azure/scripts/init-sig.sh b/images/capi/packer/azure/scripts/init-sig.sh index 447c11337..3ef3a8542 100755 --- a/images/capi/packer/azure/scripts/init-sig.sh +++ b/images/capi/packer/azure/scripts/init-sig.sh @@ -13,7 +13,22 @@ az account set -s ${AZURE_SUBSCRIPTION_ID} >/dev/null 2>&1 eval "$tracestate" export RESOURCE_GROUP_NAME="${RESOURCE_GROUP_NAME:-cluster-api-images}" -export AZURE_LOCATION="${AZURE_LOCATION:-northcentralus}" +export AZURE_LOCATION="${AZURE_LOCATION:-southcentralus}" + +# TODO: [AUGUST 2024] Remove purchase plan info when the image is GA +# Creating Azure VMs from a Marketplace Image requires a Purchase Plan +# https://learn.microsoft.com/en-us/azure/virtual-machines/marketplace-images +export PLAN_PUBLISHER="${PLAN_PUBLISHER:-''}" +export PLAN_OFFER="${PLAN_OFFER:-''}" +export PLAN_NAME="${PLAN_NAME:-''}" +export OS_VERSION="${OS_VERSION:-'latest'}" + +# TODO: [AUGUST 2024] Remove after testing Windows Server 2025 preview +# Build fails wth: "You have not accepted the legal terms on this subscription" +# publisher:offer:sku:version +echo "Accept Azure marketplace terms" +az vm image terms accept --urn ${PLAN_PUBLISHER}:${PLAN_OFFER}:${PLAN_NAME}:${OS_VERSION} + if ! az group show -n ${RESOURCE_GROUP_NAME} -o none 2>/dev/null; then az group create -n ${RESOURCE_GROUP_NAME} -l ${AZURE_LOCATION} --tags ${TAGS:-} fi @@ -50,7 +65,10 @@ create_image_definition() { --sku ${SIG_SKU:-$2} \ --hyper-v-generation ${3} \ --os-type ${4} \ - --features ${5:-''} + --features ${5:-''} \ + --plan-name ${PLAN_NAME} \ + --plan-product ${PLAN_OFFER} \ + --plan-publisher ${PLAN_PUBLISHER} } SIG_TARGET=$1 @@ -83,6 +101,9 @@ case ${SIG_TARGET} in windows-2022-containerd) create_image_definition ${SIG_TARGET} "win-2022-containerd" "V1" "Windows" ;; + windows-2025-containerd) + create_image_definition ${SIG_TARGET} "win-2025-containerd" "V2" "Windows" + ;; windows-annual-containerd) create_image_definition ${SIG_TARGET} "win-annual-containerd" "V1" "Windows" ;; diff --git a/images/capi/packer/azure/scripts/init-vhd.sh b/images/capi/packer/azure/scripts/init-vhd.sh index a88c17b89..dc70a41e1 100755 --- a/images/capi/packer/azure/scripts/init-vhd.sh +++ b/images/capi/packer/azure/scripts/init-vhd.sh @@ -15,6 +15,12 @@ fi az account set -s ${AZURE_SUBSCRIPTION_ID} >/dev/null 2>&1 eval "$tracestate" +# TODO: [02-August-2024] Remove after testing Windows Server 2025 preview +# Build fails wth: "You have not accepted the legal terms on this subscription" +# publisher:offer:sku:version +echo "Accept Azure marketplace terms" +az vm image terms accept --urn ${PLAN_PUBLISHER}:${PLAN_OFFER}:${PLAN_NAME}:latest + echo "Create storage account" export RESOURCE_GROUP_NAME="${RESOURCE_GROUP_NAME:-cluster-api-images}" export AZURE_LOCATION="${AZURE_LOCATION:-northcentralus}" @@ -35,4 +41,9 @@ export STORAGE_ACCOUNT_NAME="${STORAGE_ACCOUNT_NAME:-capi${CREATE_TIME}${RANDOM_ az storage account check-name --name ${STORAGE_ACCOUNT_NAME} az storage account create -n ${STORAGE_ACCOUNT_NAME} -g ${RESOURCE_GROUP_NAME} -l ${AZURE_LOCATION} --allow-blob-public-access false +# TODO: [02-August-2024] Remove after testing Windows Server 2025 preview +# For this image, we need to create a managed disk from the VHD. +# https://developer.hashicorp.com/packer/integrations/hashicorp/azure/latest/components/builder/arm#required: +# export MANAGED_IMAGE_NAME="${MANAGED_IMAGE_NAME}:-CAPIManagedImage" + echo "done" diff --git a/images/capi/packer/azure/windows-2025-containerd.json b/images/capi/packer/azure/windows-2025-containerd.json new file mode 100644 index 000000000..b49506857 --- /dev/null +++ b/images/capi/packer/azure/windows-2025-containerd.json @@ -0,0 +1,18 @@ +{ + "additional_registry_images": "false", + "additional_registry_images_list": "", + "build_name": "windows-2025-containerd", + "distribution": "windows", + "distribution_version": "2025", + "image_offer": "microsoftserveroperatingsystems-previews", + "image_publisher": "MicrosoftWindowsServer", + "image_sku": "windows-server-2025-azure-edition-hotpatch", + "image_version": "latest", + "load_additional_components": "false", + "runtime": "containerd", + "vm_size": "Standard_D4s_v3", + "windows_updates_kbs": "", + "plan_image_sku": "windows-server-2025-azure-edition-hotpatch", + "plan_image_offer": "microsoftserveroperatingsystems-previews", + "plan_image_publisher": "microsoftwindowsserver" +}