From f7e259cb3f3c015d7dc1e0f4f119edbaf374ed33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20PEREZ?= Date: Thu, 30 Apr 2026 10:06:05 +0200 Subject: [PATCH] Add Ubuntu 26.04 LTS (Resolute Raccoon) support - Update Makefile, azure_targets.sh, init-sig.sh with ubuntu-2604 targets - Remove Azure CVM target - Replace deprecated apt_key with signed-by keyring approach (all roles) - Map Azure CLI codename resolute->noble (no MS repo for 26.04 yet) - Set QEMU memory to 4GB for Ubuntu 26.04 - Update README.md and all provider docs --- README.md | 1 + docs/book/src/capi/providers/3dsoutscale.md | 1 + docs/book/src/capi/providers/aws.md | 1 + docs/book/src/capi/providers/digitalocean.md | 1 + docs/book/src/capi/providers/gcp.md | 1 + docs/book/src/capi/providers/hcloud.md | 1 + docs/book/src/capi/providers/maas.md | 4 +- docs/book/src/capi/providers/proxmox.md | 1 + docs/book/src/capi/providers/scaleway.md | 1 + docs/book/src/capi/providers/vsphere.md | 2 + docs/book/src/capi/providers/vultr.md | 1 + images/capi/Makefile | 77 +++++++++--- .../capi/ansible/roles/gpu/tasks/nvidia.yml | 21 +++- .../ansible/roles/kubernetes/tasks/debian.yml | 23 +++- .../roles/providers/tasks/azurecli.yml | 29 ++++- .../ansible/roles/providers/tasks/main.yml | 26 +++- .../ansible/roles/security/tasks/falco.yml | 22 +++- .../ansible/roles/security/tasks/trivy.yml | 22 +++- images/capi/azure_targets.sh | 8 +- images/capi/packer/ami/ubuntu-2604.json | 14 +++ images/capi/packer/azure/scripts/init-sig.sh | 9 ++ images/capi/packer/azure/ubuntu-2604-cvm.json | 9 ++ .../capi/packer/azure/ubuntu-2604-gen2.json | 9 ++ images/capi/packer/azure/ubuntu-2604.json | 9 ++ .../capi/packer/digitalocean/ubuntu-2604.json | 5 + images/capi/packer/gce/ubuntu-2604.json | 9 ++ images/capi/packer/hcloud/ubuntu-2604.json | 8 ++ .../linux/ubuntu/http/26.04.efi/meta-data | 0 .../ubuntu/http/26.04.efi/user-data.tmpl | 116 ++++++++++++++++++ .../maas/linux/ubuntu/http/26.04/meta-data | 0 .../linux/ubuntu/http/26.04/user-data.tmpl | 93 ++++++++++++++ .../packer/maas/maas-ubuntu-2604-efi.json | 14 +++ images/capi/packer/nutanix/ubuntu-2604.json | 8 ++ images/capi/packer/openstack/ubuntu-2604.json | 5 + images/capi/packer/outscale/ubuntu-2604.json | 7 ++ .../ova/linux/ubuntu/http/26.04.efi/meta-data | 0 .../ubuntu/http/26.04.efi/user-data.tmpl | 111 +++++++++++++++++ .../ova/linux/ubuntu/http/26.04/meta-data | 0 .../linux/ubuntu/http/26.04/user-data.tmpl | 90 ++++++++++++++ images/capi/packer/ova/ubuntu-2604-efi.json | 19 +++ images/capi/packer/ova/ubuntu-2604.json | 18 +++ .../linux/ubuntu/http/26.04.efi/meta-data | 0 .../ubuntu/http/26.04.efi/user-data.tmpl | 99 +++++++++++++++ .../proxmox/linux/ubuntu/http/26.04/meta-data | 0 .../linux/ubuntu/http/26.04/user-data.tmpl | 75 +++++++++++ .../capi/packer/proxmox/ubuntu-2604-efi.json | 14 +++ images/capi/packer/proxmox/ubuntu-2604.json | 14 +++ .../linux/ubuntu/http/26.04.efi/meta-data | 0 .../ubuntu/http/26.04.efi/user-data.tmpl | 116 ++++++++++++++++++ .../qemu/linux/ubuntu/http/26.04/meta-data | 0 .../linux/ubuntu/http/26.04/user-data.tmpl | 93 ++++++++++++++ .../packer/qemu/qemu-ubuntu-2604-efi.json | 15 +++ images/capi/packer/qemu/qemu-ubuntu-2604.json | 14 +++ .../raw/linux/ubuntu/http/26.04.efi/meta-data | 0 .../ubuntu/http/26.04.efi/user-data.tmpl | 114 +++++++++++++++++ .../raw/linux/ubuntu/http/26.04/meta-data | 0 .../linux/ubuntu/http/26.04/user-data.tmpl | 92 ++++++++++++++ .../capi/packer/raw/raw-ubuntu-2604-efi.json | 17 +++ images/capi/packer/raw/raw-ubuntu-2604.json | 16 +++ images/capi/packer/scaleway/ubuntu-2604.json | 6 + images/capi/packer/vultr/ubuntu-2604.json | 6 + 61 files changed, 1447 insertions(+), 40 deletions(-) create mode 100644 images/capi/packer/ami/ubuntu-2604.json create mode 100644 images/capi/packer/azure/ubuntu-2604-cvm.json create mode 100644 images/capi/packer/azure/ubuntu-2604-gen2.json create mode 100644 images/capi/packer/azure/ubuntu-2604.json create mode 100644 images/capi/packer/digitalocean/ubuntu-2604.json create mode 100644 images/capi/packer/gce/ubuntu-2604.json create mode 100644 images/capi/packer/hcloud/ubuntu-2604.json create mode 100644 images/capi/packer/maas/linux/ubuntu/http/26.04.efi/meta-data create mode 100644 images/capi/packer/maas/linux/ubuntu/http/26.04.efi/user-data.tmpl create mode 100644 images/capi/packer/maas/linux/ubuntu/http/26.04/meta-data create mode 100644 images/capi/packer/maas/linux/ubuntu/http/26.04/user-data.tmpl create mode 100644 images/capi/packer/maas/maas-ubuntu-2604-efi.json create mode 100644 images/capi/packer/nutanix/ubuntu-2604.json create mode 100644 images/capi/packer/openstack/ubuntu-2604.json create mode 100644 images/capi/packer/outscale/ubuntu-2604.json create mode 100644 images/capi/packer/ova/linux/ubuntu/http/26.04.efi/meta-data create mode 100644 images/capi/packer/ova/linux/ubuntu/http/26.04.efi/user-data.tmpl create mode 100644 images/capi/packer/ova/linux/ubuntu/http/26.04/meta-data create mode 100644 images/capi/packer/ova/linux/ubuntu/http/26.04/user-data.tmpl create mode 100644 images/capi/packer/ova/ubuntu-2604-efi.json create mode 100644 images/capi/packer/ova/ubuntu-2604.json create mode 100644 images/capi/packer/proxmox/linux/ubuntu/http/26.04.efi/meta-data create mode 100644 images/capi/packer/proxmox/linux/ubuntu/http/26.04.efi/user-data.tmpl create mode 100644 images/capi/packer/proxmox/linux/ubuntu/http/26.04/meta-data create mode 100644 images/capi/packer/proxmox/linux/ubuntu/http/26.04/user-data.tmpl create mode 100644 images/capi/packer/proxmox/ubuntu-2604-efi.json create mode 100644 images/capi/packer/proxmox/ubuntu-2604.json create mode 100644 images/capi/packer/qemu/linux/ubuntu/http/26.04.efi/meta-data create mode 100644 images/capi/packer/qemu/linux/ubuntu/http/26.04.efi/user-data.tmpl create mode 100644 images/capi/packer/qemu/linux/ubuntu/http/26.04/meta-data create mode 100644 images/capi/packer/qemu/linux/ubuntu/http/26.04/user-data.tmpl create mode 100644 images/capi/packer/qemu/qemu-ubuntu-2604-efi.json create mode 100644 images/capi/packer/qemu/qemu-ubuntu-2604.json create mode 100644 images/capi/packer/raw/linux/ubuntu/http/26.04.efi/meta-data create mode 100644 images/capi/packer/raw/linux/ubuntu/http/26.04.efi/user-data.tmpl create mode 100644 images/capi/packer/raw/linux/ubuntu/http/26.04/meta-data create mode 100644 images/capi/packer/raw/linux/ubuntu/http/26.04/user-data.tmpl create mode 100644 images/capi/packer/raw/raw-ubuntu-2604-efi.json create mode 100644 images/capi/packer/raw/raw-ubuntu-2604.json create mode 100644 images/capi/packer/scaleway/ubuntu-2604.json create mode 100644 images/capi/packer/vultr/ubuntu-2604.json diff --git a/README.md b/README.md index 5c257f1a2d..9df4980db4 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ The table below shows the currently provided operating systems for each provider | Rocky Linux 9 | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | 💙 | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | | Ubuntu 22.04 | ✅ | 💙 | ✅ | 💙 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 💙 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | | Ubuntu 24.04 | ✅ | 💙 | ✅ | 💙 | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | 💙 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | +| Ubuntu 26.04 | ✅ | 💙 | ✅ | 💙 | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | 💙 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | | Windows 2019 | ✅ | 💙 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | Windows 2022 | ❌ | 💙 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | Windows 2025 | ❌ | 💙 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | diff --git a/docs/book/src/capi/providers/3dsoutscale.md b/docs/book/src/capi/providers/3dsoutscale.md index 668e58a4d4..0b64d9a8cb 100644 --- a/docs/book/src/capi/providers/3dsoutscale.md +++ b/docs/book/src/capi/providers/3dsoutscale.md @@ -28,6 +28,7 @@ the different operating systems. |------|-------------| | `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image | | `ubuntu-2404.json` | The settings for the Ubuntu 24.04 image | +| `ubuntu-2604.json` | The settings for the Ubuntu 26.04 image | You must have your [Access Keys](https://docs.outscale.com/en/userguide/About-Access-Keys.html). You must have your [Account Id](https://docs.outscale.com/en/userguide/Getting-Information-About-Your-Account-and-Quotas.html). diff --git a/docs/book/src/capi/providers/aws.md b/docs/book/src/capi/providers/aws.md index f6f11c527e..5e44760599 100644 --- a/docs/book/src/capi/providers/aws.md +++ b/docs/book/src/capi/providers/aws.md @@ -46,6 +46,7 @@ the different operating systems. | `rockylinux.json` | The settings for the Rocky Linux image | | `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image | | `ubuntu-2404.json` | The settings for the Ubuntu 24.04 image | +| `ubuntu-2604.json` | The settings for the Ubuntu 26.04 image | | `windows-2019.json` | The settings for the Windows 2019 image | diff --git a/docs/book/src/capi/providers/digitalocean.md b/docs/book/src/capi/providers/digitalocean.md index b4addae554..de2a67504e 100644 --- a/docs/book/src/capi/providers/digitalocean.md +++ b/docs/book/src/capi/providers/digitalocean.md @@ -27,3 +27,4 @@ the different operating systems. |------|-------------| | `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image | | `ubuntu-2404.json` | The settings for the Ubuntu 24.04 image | +| `ubuntu-2604.json` | The settings for the Ubuntu 26.04 image | diff --git a/docs/book/src/capi/providers/gcp.md b/docs/book/src/capi/providers/gcp.md index 0fec5d46c2..f5ace949a3 100644 --- a/docs/book/src/capi/providers/gcp.md +++ b/docs/book/src/capi/providers/gcp.md @@ -50,6 +50,7 @@ The `gce` sub-directory inside `images/capi/packer` stores JSON configuration fi | -------- | -------- | `ubuntu-2204.json` | Settings for Ubuntu 22.04 image | | `ubuntu-2404.json` | Settings for Ubuntu 24.04 image | +| `ubuntu-2604.json` | Settings for Ubuntu 26.04 image | #### Common GCP options diff --git a/docs/book/src/capi/providers/hcloud.md b/docs/book/src/capi/providers/hcloud.md index e35759075b..4492e6ae4e 100644 --- a/docs/book/src/capi/providers/hcloud.md +++ b/docs/book/src/capi/providers/hcloud.md @@ -29,3 +29,4 @@ the different operating systems. | `rockylinux-9.json` | The settings for the RockyLinux 9 image | | `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image | | `ubuntu-2404.json` | The settings for the Ubuntu 24.04 image | +| `ubuntu-2604.json` | The settings for the Ubuntu 26.04 image | diff --git a/docs/book/src/capi/providers/maas.md b/docs/book/src/capi/providers/maas.md index 2db31b0b9a..3f71d323e3 100644 --- a/docs/book/src/capi/providers/maas.md +++ b/docs/book/src/capi/providers/maas.md @@ -19,7 +19,7 @@ From the `image-builder` directory, run: make build-maas-ubuntu-xxxx-efi ``` -The image will be located in `images/capi/output/BUILD_NAME+kube-KUBERNETES_VERSION`. Replace `xxxx` with `2204` or `2404`, depending on the Ubuntu version. +The image will be located in `images/capi/output/BUILD_NAME+kube-KUBERNETES_VERSION`. Replace `xxxx` with `2204`, `2404` or `2604`, depending on the Ubuntu version. To build a Ubuntu 22.04-based CAPI image: @@ -73,7 +73,7 @@ Use the **.tar.gz** file for the upload: maas admin boot-resources create name=custom/your-image architecture=amd64/generic title=your-image subarches=generic base_image=ubuntu/jammy content@=./ubuntu-2204-efi-kube-v1.30.5.tar.gz ``` -**Note:** Set `base_image=ubuntu/jammy` for Ubuntu 22.04 or `ubuntu/noble` for 24.04. +**Note:** Set `base_image=ubuntu/jammy` for Ubuntu 22.04, `ubuntu/noble` for 24.04, or `ubuntu/resolute` for 26.04. ## Custom Curtin Scripts If you need to override the default MaaS curtin scripts, create a custom role containing the curtin hooks. The files must be copied to the `/curtin` directory diff --git a/docs/book/src/capi/providers/proxmox.md b/docs/book/src/capi/providers/proxmox.md index 44ef8f4a71..f5e317023d 100644 --- a/docs/book/src/capi/providers/proxmox.md +++ b/docs/book/src/capi/providers/proxmox.md @@ -38,6 +38,7 @@ the different operating systems. |--------------------|-----------------------------------------| | `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image | | `ubuntu-2404.json` | The settings for the Ubuntu 24.04 image | +| `ubuntu-2604.json` | The settings for the Ubuntu 26.04 image | The full list of available environment vars can be found in the `variables` section of `images/capi/packer/proxmox/packer.json`. diff --git a/docs/book/src/capi/providers/scaleway.md b/docs/book/src/capi/providers/scaleway.md index 5e3daf5175..fa2aa61f9e 100644 --- a/docs/book/src/capi/providers/scaleway.md +++ b/docs/book/src/capi/providers/scaleway.md @@ -27,3 +27,4 @@ the different operating systems. | `rockylinux-9.json` | The settings for the Rocky Linux 9 image | | `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image | | `ubuntu-2404.json` | The settings for the Ubuntu 24.04 image | +| `ubuntu-2604.json` | The settings for the Ubuntu 26.04 image | diff --git a/docs/book/src/capi/providers/vsphere.md b/docs/book/src/capi/providers/vsphere.md index f774f4cff5..83276944ba 100644 --- a/docs/book/src/capi/providers/vsphere.md +++ b/docs/book/src/capi/providers/vsphere.md @@ -84,6 +84,8 @@ In addition to the configuration found in `images/capi/packer/config`, the `ova` | `ubuntu-2204-efi.json` | The settings for the Ubuntu 22.04 EFI image | | `ubuntu-2404.json` | The settings for the Ubuntu 24.04 image | | `ubuntu-2404-efi.json` | The settings for the Ubuntu 24.04 EFI image | +| `ubuntu-2604.json` | The settings for the Ubuntu 26.04 image | +| `ubuntu-2604-efi.json` | The settings for the Ubuntu 26.04 EFI image | | `vsphere.json` | Additional settings needed when building on a remote vSphere | ### Photon specific options diff --git a/docs/book/src/capi/providers/vultr.md b/docs/book/src/capi/providers/vultr.md index 97cf74d071..f78254202d 100644 --- a/docs/book/src/capi/providers/vultr.md +++ b/docs/book/src/capi/providers/vultr.md @@ -26,3 +26,4 @@ for the different operating systems. |------|-------------| | `ubuntu-2204.json` | The settings for the Ubuntu 22.04 image | | `ubuntu-2404.json` | The settings for the Ubuntu 24.04 image | +| `ubuntu-2604.json` | The settings for the Ubuntu 26.04 image | diff --git a/images/capi/Makefile b/images/capi/Makefile index 47d56c5965..b3a33c5f6d 100644 --- a/images/capi/Makefile +++ b/images/capi/Makefile @@ -48,6 +48,7 @@ GET_UBUNTU_DOTTED_SEMVER=$(strip \ $(eval _UBUNTU_SEMVER:=$1) \ $(eval _UBUNTU_SEMVER:=$(subst ubuntu-2204,ubuntu-22.04,$(_UBUNTU_SEMVER))) \ $(eval _UBUNTU_SEMVER:=$(subst ubuntu-2404,ubuntu-24.04,$(_UBUNTU_SEMVER))) \ + $(eval _UBUNTU_SEMVER:=$(subst ubuntu-2604,ubuntu-26.04,$(_UBUNTU_SEMVER))) \ $(_UBUNTU_SEMVER) \ ) @@ -342,7 +343,7 @@ PHOTON_VERSIONS := photon-4 photon-5 RHEL_VERSIONS := rhel-9 ROCKYLINUX_VERSIONS := rockylinux-9 ALMALINUX_VERSIONS := almalinux-9 -UBUNTU_VERSIONS := ubuntu-2204 ubuntu-2204-efi ubuntu-2404 ubuntu-2404-efi +UBUNTU_VERSIONS := ubuntu-2204 ubuntu-2204-efi ubuntu-2404 ubuntu-2404-efi ubuntu-2604 ubuntu-2604-efi WINDOWS_VERSIONS := windows-2019 windows-2019-efi windows-2022 windows-2022-efi # Set Flatcar Container Linux channel and version if not supplied @@ -369,9 +370,9 @@ NODE_OVA_VSPHERE_BUILD_NAMES := $(addprefix node-ova-vsphere-,$(PLATFORMS_AND_V NODE_OVA_VSPHERE_BASE_BUILD_NAMES := $(addprefix node-ova-vsphere-base-,$(PLATFORMS_AND_VERSIONS)) NODE_OVA_VSPHERE_CLONE_BUILD_NAMES := $(addprefix node-ova-vsphere-clone-,$(PLATFORMS_AND_VERSIONS)) -AMI_BUILD_NAMES ?= ami-ubuntu-2204 ami-ubuntu-2404 ami-amazon-2 ami-amazon-2023 ami-flatcar ami-flatcar-arm64 ami-windows-2019 +AMI_BUILD_NAMES ?= ami-ubuntu-2204 ami-ubuntu-2404 ami-ubuntu-2604 ami-amazon-2 ami-amazon-2023 ami-flatcar ami-flatcar-arm64 ami-windows-2019 HUAWEICLOUD_BUILD_NAMES ?= huaweicloud-ubuntu-2204 -GCE_BUILD_NAMES ?= gce-ubuntu-2204 gce-ubuntu-2404 +GCE_BUILD_NAMES ?= gce-ubuntu-2204 gce-ubuntu-2404 gce-ubuntu-2604 # Make needs these lists to be space delimited, no quotes VHD_TARGETS := $(shell grep VHD_TARGETS azure_targets.sh | sed 's/VHD_TARGETS=//' | tr -d \") @@ -385,31 +386,31 @@ AZURE_BUILD_SIG_CVM_NAMES ?= $(addsuffix -cvm,$(addprefix azure-sig-,$(SIG_CVM_T OCI_BUILD_NAMES ?= oci-ubuntu-2204 oci-oracle-linux-9 oci-windows-2019 oci-windows-2022 -DO_BUILD_NAMES ?= do-ubuntu-2204 do-ubuntu-2404 +DO_BUILD_NAMES ?= do-ubuntu-2204 do-ubuntu-2404 do-ubuntu-2604 -OPENSTACK_BUILD_NAMES ?= openstack-ubuntu-2204 openstack-ubuntu-2404 openstack-flatcar openstack-rockylinux-9 +OPENSTACK_BUILD_NAMES ?= openstack-ubuntu-2204 openstack-ubuntu-2404 openstack-ubuntu-2604 openstack-flatcar openstack-rockylinux-9 -OSC_BUILD_NAMES ?= osc-ubuntu-2204 osc-ubuntu-2404 +OSC_BUILD_NAMES ?= osc-ubuntu-2204 osc-ubuntu-2404 osc-ubuntu-2604 -QEMU_BUILD_NAMES ?= qemu-ubuntu-2204 qemu-ubuntu-2204-cloudimg qemu-ubuntu-2404 qemu-ubuntu-2404-efi qemu-ubuntu-2204-efi qemu-centos-9 qemu-rhel-9 qemu-rockylinux-9 qemu-rockylinux-9-cloudimg qemu-flatcar +QEMU_BUILD_NAMES ?= qemu-ubuntu-2204 qemu-ubuntu-2204-cloudimg qemu-ubuntu-2404 qemu-ubuntu-2404-efi qemu-ubuntu-2604 qemu-ubuntu-2604-efi qemu-ubuntu-2204-efi qemu-centos-9 qemu-rhel-9 qemu-rockylinux-9 qemu-rockylinux-9-cloudimg qemu-flatcar QEMU_KUBEVIRT_BUILD_NAMES := $(addprefix kubevirt-,$(QEMU_BUILD_NAMES)) -RAW_BUILD_NAMES ?= raw-ubuntu-2204 raw-ubuntu-2204-efi raw-ubuntu-2404 raw-ubuntu-2404-efi raw-flatcar raw-rhel-9 raw-rhel-9-efi +RAW_BUILD_NAMES ?= raw-ubuntu-2204 raw-ubuntu-2204-efi raw-ubuntu-2404 raw-ubuntu-2404-efi raw-ubuntu-2604 raw-ubuntu-2604-efi raw-flatcar raw-rhel-9 raw-rhel-9-efi POWERVS_BUILD_NAMES ?= powervs-centos-9 -NUTANIX_BUILD_NAMES ?= nutanix-ubuntu-2204 nutanix-ubuntu-2404 nutanix-rhel-9 nutanix-rockylinux-9 nutanix-flatcar nutanix-windows-2022 +NUTANIX_BUILD_NAMES ?= nutanix-ubuntu-2204 nutanix-ubuntu-2404 nutanix-ubuntu-2604 nutanix-rhel-9 nutanix-rockylinux-9 nutanix-flatcar nutanix-windows-2022 -HCLOUD_BUILD_NAMES ?= hcloud-ubuntu-2204 hcloud-ubuntu-2404 hcloud-rockylinux-9 hcloud-flatcar hcloud-flatcar-arm64 +HCLOUD_BUILD_NAMES ?= hcloud-ubuntu-2204 hcloud-ubuntu-2404 hcloud-ubuntu-2604 hcloud-rockylinux-9 hcloud-flatcar hcloud-flatcar-arm64 -PROXMOX_BUILD_NAMES ?= proxmox-ubuntu-2204 proxmox-ubuntu-2404 proxmox-ubuntu-2404-efi proxmox-rockylinux-9 proxmox-flatcar +PROXMOX_BUILD_NAMES ?= proxmox-ubuntu-2204 proxmox-ubuntu-2404 proxmox-ubuntu-2404-efi proxmox-ubuntu-2604 proxmox-ubuntu-2604-efi proxmox-rockylinux-9 proxmox-flatcar -VULTR_BUILD_NAMES ?= vultr-ubuntu-2204 vultr-ubuntu-2404 +VULTR_BUILD_NAMES ?= vultr-ubuntu-2204 vultr-ubuntu-2404 vultr-ubuntu-2604 -MAAS_BUILD_NAMES ?= maas-ubuntu-2204-efi maas-ubuntu-2404-efi +MAAS_BUILD_NAMES ?= maas-ubuntu-2204-efi maas-ubuntu-2404-efi maas-ubuntu-2604-efi -SCALEWAY_BUILD_NAMES ?= scaleway-rockylinux-9 scaleway-ubuntu-2204 scaleway-ubuntu-2404 +SCALEWAY_BUILD_NAMES ?= scaleway-rockylinux-9 scaleway-ubuntu-2204 scaleway-ubuntu-2404 scaleway-ubuntu-2604 ## -------------------------------------- ## Dynamic build targets @@ -700,6 +701,7 @@ build-ami-amazon-2: ## Builds Amazon-2 Linux AMI build-ami-amazon-2023: ## Builds Amazon-2023 Linux AMI build-ami-ubuntu-2204: ## Builds Ubuntu 22.04 AMI build-ami-ubuntu-2404: ## Builds Ubuntu 24.04 AMI +build-ami-ubuntu-2604: ## Builds Ubuntu 26.04 AMI build-ami-flatcar: ## Builds Flatcar build-ami-flatcar-arm64: ## Builds Flatcar arm64 build-ami-windows-2019: ## Build Windows Server 2019 AMI Packer config @@ -707,6 +709,7 @@ build-ami-all: $(AMI_BUILD_TARGETS) ## Builds all AMIs build-azure-sig-ubuntu-2204: ## Builds Ubuntu 22.04 Azure managed image in Shared Image Gallery build-azure-sig-ubuntu-2404: ## Builds Ubuntu 24.04 Azure managed image in Shared Image Gallery +build-azure-sig-ubuntu-2604: ## Builds Ubuntu 26.04 Azure managed image in Shared Image Gallery build-azure-sig-azurelinux-3: ## Builds Azure Linux 3 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 @@ -715,6 +718,7 @@ build-azure-sig-windows-2019-containerd-cvm: ## Builds Windows Server 2019 with 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-2204: ## Builds Ubuntu 22.04 VHD image for Azure build-azure-vhd-ubuntu-2404: ## Builds Ubuntu 24.04 VHD image for Azure +build-azure-vhd-ubuntu-2604: ## Builds Ubuntu 26.04 VHD image for Azure build-azure-vhd-azurelinux-3: ## Builds Azure Linux 3 VHD image for Azure build-azure-vhd-windows-2019-containerd: ## Builds for Windows Server 2019 with containerd build-azure-vhd-windows-2022-containerd: ## Builds for Windows Server 2022 with containerd @@ -724,17 +728,21 @@ build-azure-sig-flatcar: ## Builds Flatcar Azure managed image in Shared Image G build-azure-sig-flatcar-gen2: ## Builds Flatcar Azure Gen2 managed image in Shared Image Gallery build-azure-sig-ubuntu-2204-gen2: ## Builds Ubuntu 22.04 Gen2 managed image in Shared Image Gallery build-azure-sig-ubuntu-2404-gen2: ## Builds Ubuntu 24.04 Gen2 managed image in Shared Image Gallery +build-azure-sig-ubuntu-2604-gen2: ## Builds Ubuntu 26.04 Gen2 managed image in Shared Image Gallery build-azure-sig-ubuntu-2204-cvm: ## Builds Ubuntu 22.04 CVM managed image in Shared Image Gallery build-azure-sig-ubuntu-2404-cvm: ## Builds Ubuntu 24.04 CVM managed image in Shared Image Gallery +build-azure-sig-ubuntu-2604-cvm: ## Builds Ubuntu 26.04 CVM managed image in Shared Image Gallery build-azure-vhds: $(AZURE_BUILD_VHD_TARGETS) ## Builds all Azure VHDs build-azure-sigs: $(AZURE_BUILD_SIG_TARGETS) $(AZURE_BUILD_SIG_GEN2_TARGETS) $(AZURE_BUILD_SIG_CVM_TARGETS) ## Builds all Azure Shared Image Gallery images build-do-ubuntu-2204: ## Builds Ubuntu 22.04 DigitalOcean Snapshot build-do-ubuntu-2404: ## Builds Ubuntu 24.04 DigitalOcean Snapshot +build-do-ubuntu-2604: ## Builds Ubuntu 26.04 DigitalOcean Snapshot build-do-all: $(DO_BUILD_TARGETS) ## Builds all DigitalOcean Snapshot build-gce-ubuntu-2204: ## Builds the GCE ubuntu-2204 image build-gce-ubuntu-2404: ## Builds the GCE ubuntu-2404 image +build-gce-ubuntu-2604: ## Builds the GCE ubuntu-2604 image build-gce-all: $(GCE_BUILD_TARGETS) ## Builds all GCE image build-huaweicloud-ubuntu-2204: ## Builds Ubuntu 22.04 HuaweiCloud image @@ -759,6 +767,8 @@ build-node-ova-vsphere-ubuntu-2204: ## Builds Ubuntu 22.04 Node OVA and template build-node-ova-vsphere-ubuntu-2204-efi: ## Builds Ubuntu 22.04 Node OVA and template on vSphere that EFI boots build-node-ova-vsphere-ubuntu-2404: ## Builds Ubuntu 24.04 Node OVA and template on vSphere build-node-ova-vsphere-ubuntu-2404-efi: ## Builds Ubuntu 24.04 Node OVA and template on vSphere that EFI boots +build-node-ova-vsphere-ubuntu-2604: ## Builds Ubuntu 26.04 Node OVA and template on vSphere +build-node-ova-vsphere-ubuntu-2604-efi: ## Builds Ubuntu 26.04 Node OVA and template on vSphere that EFI boots build-node-ova-vsphere-windows-2019: ## Builds for Windows Server 2019 and template on vSphere build-node-ova-vsphere-windows-2019-efi: ## Builds for Windows Server 2019 and template on vSphere that EFI boots build-node-ova-vsphere-windows-2022: ## Builds for Windows Server 2022 template on vSphere @@ -774,6 +784,8 @@ build-node-ova-vsphere-clone-ubuntu-2204: ## Builds Ubuntu 22.04 Node OVA and te build-node-ova-vsphere-clone-ubuntu-2204-efi: ## ## Builds Ubuntu 22.04 Node OVA and template on vSphere that EFI boots build-node-ova-vsphere-clone-ubuntu-2404: ## Builds Ubuntu 24.04 Node OVA and template on vSphere build-node-ova-vsphere-clone-ubuntu-2404-efi: ## ## Builds Ubuntu 24.04 Node OVA and template on vSphere that EFI boots +build-node-ova-vsphere-clone-ubuntu-2604: ## Builds Ubuntu 26.04 Node OVA and template on vSphere +build-node-ova-vsphere-clone-ubuntu-2604-efi: ## Builds Ubuntu 26.04 Node OVA and template on vSphere that EFI boots build-node-ova-vsphere-clone-all: $(NODE_OVA_VSPHERE_CLONE_BUILD_TARGETS) ## Builds all Node OVAs and templates on vSphere build-node-ova-vsphere-base-photon-4: ## Builds base Photon 4 Node OVA and template on vSphere @@ -785,6 +797,8 @@ build-node-ova-vsphere-base-ubuntu-2204: ## Builds base Ubuntu 22.04 Node OVA an build-node-ova-vsphere-base-ubuntu-2204-efi: ## Builds Ubuntu 22.04 Node OVA and template on vSphere that EFI boots build-node-ova-vsphere-base-ubuntu-2404: ## Builds base Ubuntu 24.04 Node OVA and template on vSphere build-node-ova-vsphere-base-ubuntu-2404-efi: ## Builds Ubuntu 24.04 Node OVA and template on vSphere that EFI boots +build-node-ova-vsphere-base-ubuntu-2604: ## Builds base Ubuntu 26.04 Node OVA and template on vSphere +build-node-ova-vsphere-base-ubuntu-2604-efi: ## Builds Ubuntu 26.04 Node OVA and template on vSphere that EFI boots build-node-ova-vsphere-base-all: $(NODE_OVA_VSPHERE_BASE_BUILD_TARGETS) ## Builds all base Node OVAs and templates on vSphere build-node-ova-local-vmx-photon-4: ## Builds Photon 4 Node OVA from VMX file w local hypervisor @@ -801,6 +815,7 @@ build-node-ova-local-base-almalinux-9: ## Builds base AlmaLinux 9 Base Node OVA build-openstack-ubuntu-2204: ## Builds Ubuntu 22.04 OpenStack image build-openstack-ubuntu-2404: ## Builds Ubuntu 24.04 OpenStack image +build-openstack-ubuntu-2604: ## Builds Ubuntu 26.04 OpenStack image build-openstack-rockylinux-9: ## Builds RockyLinux 9 OpenStack image build-openstack-flatcar: ## Builds Flatcar OpenStack image build-openstack-all: $(OPENSTACK_BUILD_TARGETS) @@ -811,6 +826,8 @@ build-qemu-ubuntu-2204-cloudimg: ## Builds Ubuntu 22.04 QEMU image using cloud i build-qemu-ubuntu-2204-efi: ## Builds Ubuntu 22.04 QEMU image that EFI boots build-qemu-ubuntu-2404: ## Builds Ubuntu 24.04 QEMU image build-qemu-ubuntu-2404-efi: ## Builds Ubuntu 24.04 QEMU image that EFI boots +build-qemu-ubuntu-2604: ## Builds Ubuntu 26.04 QEMU image +build-qemu-ubuntu-2604-efi: ## Builds Ubuntu 26.04 QEMU image that EFI boots build-qemu-centos-9: ## Builds CentOS 9 Stream QEMU image build-qemu-rhel-9: ## Builds RHEL 9 QEMU image build-qemu-rockylinux-9: ## Builds Rocky 9 QEMU image @@ -819,12 +836,15 @@ build-qemu-all: $(QEMU_BUILD_TARGETS) ## Builds all Qemu images build-maas-ubuntu-2204-efi: ## Builds Ubuntu 22.04 MaaS image that EFI boots build-maas-ubuntu-2404-efi: ## Builds Ubuntu 24.04 MaaS image that EFI boots +build-maas-ubuntu-2604-efi: ## Builds Ubuntu 26.04 MaaS image that EFI boots build-raw-flatcar: ## Builds Flatcar RAW image build-raw-ubuntu-2204: ## Builds Ubuntu 22.04 RAW image build-raw-ubuntu-2204-efi: ## Builds Ubuntu 22.04 RAW image that EFI boots build-raw-ubuntu-2404: ## Builds Ubuntu 24.04 RAW image build-raw-ubuntu-2404-efi: ## Builds Ubuntu 24.04 RAW image that EFI boots +build-raw-ubuntu-2604: ## Builds Ubuntu 26.04 RAW image +build-raw-ubuntu-2604-efi: ## Builds Ubuntu 26.04 RAW image that EFI boots build-raw-rhel-9: ## Builds RHEL 9 RAW image build-raw-rhel-9-efi: ## Builds RHEL 9 RAW image that EFI boots build-raw-all: $(RAW_BUILD_TARGETS) ## Builds all RAW images @@ -837,10 +857,12 @@ build-oci-all: $(OCI_BUILD_TARGETS) ## Builds all OCI image build-osc-ubuntu-2204: ## Builds Ubuntu 22.04 Outscale Snapshot build-osc-ubuntu-2404: ## Builds Ubuntu 24.04 Outscale Snapshot +build-osc-ubuntu-2604: ## Builds Ubuntu 26.04 Outscale Snapshot build-osc-all: $(OSC_BUILD_TARGETS) ## Builds all Outscale Snapshot build-nutanix-ubuntu-2204: ## Builds Ubuntu 22.04 Nutanix image build-nutanix-ubuntu-2404: ## Builds Ubuntu 24.04 Nutanix image +build-nutanix-ubuntu-2604: ## Builds Ubuntu 26.04 Nutanix image build-nutanix-rhel-9: ## Builds the Nutanix RedHat Enterprise Linux 9 image build-nutanix-rockylinux-9: ## Builds the Nutanix Rocky Linux 9 image build-nutanix-flatcar: ## Builds the Nutanix Flatcar image @@ -849,6 +871,7 @@ build-nutanix-all: $(NUTANIX_BUILD_TARGETS) ## Builds all Nutanix image build-hcloud-ubuntu-2204: ## Builds the Hetzner Cloud Ubuntu 22.04 image build-hcloud-ubuntu-2404: ## Builds the Hetzner Cloud Ubuntu 24.04 image +build-hcloud-ubuntu-2604: ## Builds the Hetzner Cloud Ubuntu 26.04 image build-hcloud-rockylinux-9: ## Builds the Hetzner Cloud Rocky Linux 9 image build-hcloud-flatcar: ## Builds the Hetzner Cloud Flatcar image build-hcloud-flatcar-arm64: ## Builds the Hetzner Cloud Flatcar arm64 image @@ -857,17 +880,21 @@ build-hcloud-all: $(HCLOUD_BUILD_TARGETS) ## Builds all Hetzner Cloud image build-proxmox-ubuntu-2204: ## Builds Ubuntu 22.04 Proxmox image build-proxmox-ubuntu-2404: ## Builds Ubuntu 24.04 Proxmox image build-proxmox-ubuntu-2404-efi: ## Builds Ubuntu 24.04 Proxmox image that EFI boots +build-proxmox-ubuntu-2604: ## Builds Ubuntu 26.04 Proxmox image +build-proxmox-ubuntu-2604-efi: ## Builds Ubuntu 26.04 Proxmox image that EFI boots build-proxmox-rockylinux-9: ## Builds Rocky Linux 9 Proxmox image build-proxmox-flatcar: ## Builds Flatcar Proxmox image build-proxmox-all: $(PROXMOX_BUILD_TARGETS) ## Builds all Proxmox images build-vultr-ubuntu-2204: ## Builds Ubuntu 22.04 Vultr Snapshot build-vultr-ubuntu-2404: ## Builds Ubuntu 24.04 Vultr Snapshot +build-vultr-ubuntu-2604: ## Builds Ubuntu 26.04 Vultr Snapshot build-vultr-all: $(VULTR_BUILD_TARGETS) ## Builds all Vultr Snapshots build-scaleway-rockylinux-9: ## Builds Rocky Linux 9 Scaleway image build-scaleway-ubuntu-2204: ## Builds Ubuntu 22.04 Scaleway image build-scaleway-ubuntu-2404: ## Builds Ubuntu 24.04 Scaleway image +build-scaleway-ubuntu-2604: ## Builds Ubuntu 26.04 Scaleway image build-scaleway-all: $(SCALEWAY_BUILD_TARGETS) ## Builds all Scaleway images ## -------------------------------------- @@ -881,6 +908,7 @@ validate-ami-flatcar-arm64: ## Validates Flatcar arm64 AMI Packer config validate-ami-ubuntu-2204: ## Validates Ubuntu 22.04 AMI Packer config validate-ami-ubuntu-2404: ## Validates Ubuntu 24.04 AMI Packer config +validate-ami-ubuntu-2604: ## Validates Ubuntu 26.04 AMI Packer config validate-ami-windows-2019: ## Validates Windows Server 2019 AMI Packer config validate-ami-all: $(AMI_VALIDATE_TARGETS) ## Validates all AMIs Packer config @@ -889,6 +917,7 @@ validate-huaweicloud-ubuntu-2204: ## Validates Ubuntu 22.04 HuaweiCloud Snapshot validate-azure-sig-azurelinux-3: ## Validates Azure Linux 3 Azure managed image in Shared Image Gallery Packer config validate-azure-sig-ubuntu-2204: ## Validates Ubuntu 22.04 Azure managed image in Shared Image Gallery Packer config validate-azure-sig-ubuntu-2404: ## Validates Ubuntu 24.04 Azure managed image in Shared Image Gallery Packer config +validate-azure-sig-ubuntu-2604: ## Validates Ubuntu 26.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 @@ -896,6 +925,7 @@ validate-azure-sig-windows-annual-containerd: ## Validate Windows Server Annual validate-azure-vhd-azurelinux-3: ## Validates Azure Linux 3 VHD image Azure Packer config validate-azure-vhd-ubuntu-2204: ## Validates Ubuntu 22.04 VHD image Azure Packer config validate-azure-vhd-ubuntu-2404: ## Validates Ubuntu 24.04 VHD image Azure Packer config +validate-azure-vhd-ubuntu-2604: ## Validates Ubuntu 26.04 VHD image Azure Packer config validate-azure-vhd-windows-2019-containerd: ## Validate Windows Server 2019 VHD with containerd image Azure Packer config validate-azure-vhd-windows-2022-containerd: ## Validate Windows Server 2022 VHD with containerd image Azure Packer config validate-azure-sig-azurelinux-3-gen2: ## Validates Azure Linux 3 Gen2 Azure managed image in Shared Image Gallery Packer config @@ -903,20 +933,25 @@ validate-azure-sig-ubuntu-2204-gen2: ## Validates Ubuntu 22.04 Azure managed ima validate-azure-sig-ubuntu-2204-cvm: ## Validates Ubuntu 22.04 CVM Azure managed image in Shared Image Gallery Packer config validate-azure-sig-ubuntu-2404-gen2: ## Validates Ubuntu 24.04 Azure managed image in Shared Image Gallery Packer config validate-azure-sig-ubuntu-2404-cvm: ## Validates Ubuntu 24.04 CVM Azure managed image in Shared Image Gallery Packer config +validate-azure-sig-ubuntu-2604-gen2: ## Validates Ubuntu 26.04 Azure managed image in Shared Image Gallery Packer config +validate-azure-sig-ubuntu-2604-cvm: ## Validates Ubuntu 26.04 CVM Azure managed image in Shared Image Gallery Packer config validate-azure-all: $(AZURE_VALIDATE_SIG_TARGETS) $(AZURE_VALIDATE_VHD_TARGETS) $(AZURE_VALIDATE_SIG_GEN2_TARGETS) $(AZURE_VALIDATE_SIG_CVM_TARGETS) ## Validates all images for Azure Packer config validate-do-ubuntu-2204: ## Validates Ubuntu 22.04 DigitalOcean Snapshot Packer config validate-do-ubuntu-2404: ## Validates Ubuntu 24.04 DigitalOcean Snapshot Packer config +validate-do-ubuntu-2604: ## Validates Ubuntu 26.04 DigitalOcean Snapshot Packer config validate-do-all: $(DO_VALIDATE_TARGETS) ## Validates all DigitalOcean Snapshot Packer config validate-openstack-ubuntu-2204: ## Validates Ubuntu 22.04 Openstack Image Packer config validate-openstack-ubuntu-2404: ## Validates Ubuntu 22.04 Openstack Image Packer config +validate-openstack-ubuntu-2604: ## Validates Ubuntu 26.04 Openstack Image Packer config validate-openstack-rocky-9: ## Validates Rocky 9 Openstack Image Packer config validate-openstack-flatcar: ## Validates Flatcar Openstack Image Packer config validate-openstack-all: $(OPENSTACK_VALIDATE_TARGETS) ## Validates all Openstack Glance Image Packer config validate-gce-ubuntu-2204: ## Validates Ubuntu 22.04 GCE Snapshot Packer config validate-gce-ubuntu-2404: ## Validates Ubuntu 24.04 GCE Snapshot Packer config +validate-gce-ubuntu-2604: ## Validates Ubuntu 26.04 GCE Snapshot Packer config validate-gce-all: $(GCE_VALIDATE_TARGETS) ## Validates all GCE Snapshot Packer config validate-node-ova-local-flatcar: ## Validates Flatcar stable Node OVA Packer config w local hypervisor @@ -927,6 +962,7 @@ validate-node-ova-local-rockylinux-9: ## Validates RockyLinux 9 Node OVA Packer validate-node-ova-local-almalinux-9: ## Validates AlmaLinux 9 Node OVA Packer config w local hypervisor validate-node-ova-local-ubuntu-2204: ## Validates Ubuntu 22.04 Node OVA Packer config w local hypervisor validate-node-ova-local-ubuntu-2404: ## Validates Ubuntu 24.04 Node OVA Packer config w local hypervisor +validate-node-ova-local-ubuntu-2604: ## Validates Ubuntu 26.04 Node OVA Packer config w local hypervisor validate-node-ova-local-windows-2019: ## Validates Windows Server 2019 Node OVA Packer config w local hypervisor validate-node-ova-local-windows-2022: ## Validates Windows Server 2022 Node OVA Packer config w local hypervisor validate-node-ova-local-all: $(NODE_OVA_LOCAL_VALIDATE_TARGETS) ## Validates all Node OVAs Packer config w local hypervisor @@ -938,6 +974,7 @@ validate-node-ova-local-vmx-rockylinux-9: ## Validates RockyLinux 9 Node OVA fro validate-node-ova-local-vmx-almalinux-9: ## Validates AlmaLinux 9 Node OVA from VMX file w local hypervisor validate-node-ova-local-vmx-ubuntu-2204: ## Validates Ubuntu 22.04 Node OVA from VMX file w local hypervisor validate-node-ova-local-vmx-ubuntu-2404: ## Validates Ubuntu 24.04 Node OVA from VMX file w local hypervisor +validate-node-ova-local-vmx-ubuntu-2604: ## Validates Ubuntu 26.04 Node OVA from VMX file w local hypervisor validate-node-ova-local-base-photon-4: ## Validates Photon 4 Base Node OVA w local hypervisor validate-node-ova-local-base-photon-5: ## Validates Photon 5 Base Node OVA w local hypervisor @@ -946,6 +983,7 @@ validate-node-ova-local-base-rockylinux-9: ## Validates RockyLinux 9 Base Node O validate-node-ova-local-base-almalinux-9: ## Validates AlmaLinux 9 Base Node OVA w local hypervisor validate-node-ova-local-base-ubuntu-2204: ## Validates Ubuntu 22.04 Base Node OVA w local hypervisor validate-node-ova-local-base-ubuntu-2404: ## Validates Ubuntu 24.04 Base Node OVA w local hypervisor +validate-node-ova-local-base-ubuntu-2604: ## Validates Ubuntu 26.04 Base Node OVA w local hypervisor validate-qemu-flatcar: ## Validates Flatcar QEMU image packer config validate-qemu-ubuntu-2204: ## Validates Ubuntu 22.04 QEMU image packer config @@ -953,6 +991,8 @@ validate-qemu-ubuntu-2204-cloudimg: ## Validates Ubuntu 22.04 QEMU image packer validate-qemu-ubuntu-2204-efi: ## Validates Ubuntu 22.04 QEMU EFI image packer config validate-qemu-ubuntu-2404: ## Validates Ubuntu 24.04 QEMU image packer config validate-qemu-ubuntu-2404-efi: ## Validates Ubuntu 24.04 QEMU EFI image packer config +validate-qemu-ubuntu-2604: ## Validates Ubuntu 26.04 QEMU image packer config +validate-qemu-ubuntu-2604-efi: ## Validates Ubuntu 26.04 QEMU EFI image packer config validate-qemu-rhel-9: ## Validates RHEL 9 QEMU image validate-qemu-rockylinux-9: ## Validates Rocky Linux 9 QEMU image packer config validate-qemu-rockylinux-9-cloudimg: ## Validates Rocky Linux 9 QEMU image packer config using cloud image @@ -963,6 +1003,8 @@ validate-raw-ubuntu-2204: ## Validates Ubuntu 22.04 RAW image packer config validate-raw-ubuntu-2204-efi: ## Validates Ubuntu 22.04 RAW EFI image packer config validate-raw-ubuntu-2404: ## Validates Ubuntu 24.04 RAW image packer config validate-raw-ubuntu-2404-efi: ## Validates Ubuntu 24.04 RAW EFI image packer config +validate-raw-ubuntu-2604: ## Validates Ubuntu 26.04 RAW image packer config +validate-raw-ubuntu-2604-efi: ## Validates Ubuntu 26.04 RAW EFI image packer config validate-raw-rhel-9: ## Validates RHEL 9 RAW image packer config validate-raw-all: $(RAW_VALIDATE_TARGETS) ## Validates all RAW Packer config @@ -974,6 +1016,7 @@ validate-oci-all: $(OCI_VALIDATE_TARGETS) ## Validates all OCI image packer conf validate-osc-ubuntu-2204: ## Validates Ubuntu 22.04 Outscale Snapshot Packer config validate-osc-ubuntu-2404: ## Validates Ubuntu 24.04 Outscale Snapshot Packer config +validate-osc-ubuntu-2604: ## Validates Ubuntu 26.04 Outscale Snapshot Packer config validate-osc-all: $(OSC_VALIDATE_TARGETS) ## Validates all Outscale Snapshot Packer config validate-powervs-centos-9: ## Validates the PowerVS CentOS 9 image packer config @@ -981,6 +1024,7 @@ validate-powervs-all: $(POWERVS_VALIDATE_TARGETS) ## Validates all PowerVS Packe validate-nutanix-ubuntu-2204: ## Validates Ubuntu 22.04 Nutanix Packer config validate-nutanix-ubuntu-2404: ## Validates Ubuntu 24.04 Nutanix Packer config +validate-nutanix-ubuntu-2604: ## Validates Ubuntu 26.04 Nutanix Packer config validate-nutanix-rhel-9: ## Validates RedHat Enterprise Linux 9 Nutanix Packer config validate-nutanix-rockylinux-9: ## Validates Rocky Linux 9 Nutanix Packer config validate-nutanix-flatcar: ## Validates the Nutanix Flatcar Nutanix Packer config @@ -989,6 +1033,7 @@ validate-nutanix-all: $(NUTANIX_VALIDATE_TARGETS) ## Validates all Nutanix Packe validate-hcloud-ubuntu-2204: ## Validates Ubuntu 22.04 Hetzner Cloud Packer config validate-hcloud-ubuntu-2404: ## Validates Ubuntu 24.04 Hetzner Cloud Packer config +validate-hcloud-ubuntu-2604: ## Validates Ubuntu 26.04 Hetzner Cloud Packer config validate-hcloud-rockylinux-9: ## Validates Rocky Linux 9 Hetzner Cloud Packer config validate-hcloud-flatcar: ## Validates the Hetzner Cloud Flatcar Packer config validate-hcloud-flatcar-arm64: ## Validates the Hetzner Cloud Flatcar arm64 Packer config @@ -997,17 +1042,21 @@ validate-hcloud-all: $(HCLOUD_VALIDATE_TARGETS) ## Validates all Hetzner Cloud P validate-proxmox-ubuntu-2204: ## Validates Ubuntu 22.04 Proxmox Packer config validate-proxmox-ubuntu-2404: ## Validates Ubuntu 24.04 Proxmox Packer config validate-proxmox-ubuntu-2404-efi: ## Validates Ubuntu 24.04 EFI Proxmox Packer config +validate-proxmox-ubuntu-2604: ## Validates Ubuntu 26.04 Proxmox Packer config +validate-proxmox-ubuntu-2604-efi: ## Validates Ubuntu 26.04 EFI Proxmox Packer config validate-proxmox-rockylinux-9: ## Validates Rocky Linux 9 Proxmox Packer config validate-proxmox-flatcar: ## Validates Flatcar Proxmox Packer config validate-proxmox-all: $(PROXMOX_VALIDATE_TARGETS) ## Validates all Proxmox Packer config validate-vultr-ubuntu-2204: ## Validates Ubuntu 22.04 Vultr Snapshot Packer config validate-vultr-ubuntu-2404: ## Validates Ubuntu 24.04 Vultr Snapshot Packer config +validate-vultr-ubuntu-2604: ## Validates Ubuntu 26.04 Vultr Snapshot Packer config validate-vultr-all: $(VULTR_VALIDATE_TARGETS) ## Validates all Vultr Snapshot Packer config validate-scaleway-rockylinux-9: ## Validates Rocky Linux 9 Scaleway image Packer config validate-scaleway-ubuntu-2204: ## Validates Ubuntu 22.04 Scaleway image Packer config validate-scaleway-ubuntu-2404: ## Validates Ubuntu 24.04 Scaleway image Packer config +validate-scaleway-ubuntu-2604: ## Validates Ubuntu 26.04 Scaleway image Packer config validate-scaleway-all: $(SCALEWAY_VALIDATE_TARGETS) ## Validates all Scaleway Cloud Packer config validate-all: validate-ami-all \ diff --git a/images/capi/ansible/roles/gpu/tasks/nvidia.yml b/images/capi/ansible/roles/gpu/tasks/nvidia.yml index 7629ca9182..faf88bd992 100644 --- a/images/capi/ansible/roles/gpu/tasks/nvidia.yml +++ b/images/capi/ansible/roles/gpu/tasks/nvidia.yml @@ -13,9 +13,26 @@ # limitations under the License. --- -- name: Add NVIDIA package signing key - ansible.builtin.apt_key: +- name: Ensure /etc/apt/keyrings directory exists + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + mode: "0755" + when: ansible_facts['os_family'] == "Debian" + +- name: Download NVIDIA package signing key (armored) + ansible.builtin.get_url: url: https://nvidia.github.io/libnvidia-container/gpgkey + dest: /etc/apt/keyrings/nvidia.asc + mode: "0644" + when: ansible_facts['os_family'] == "Debian" + +- name: Dearmor NVIDIA package signing key + ansible.builtin.shell: > + gpg --dearmor < /etc/apt/keyrings/nvidia.asc + > /etc/apt/keyrings/nvidia.gpg + args: + creates: /etc/apt/keyrings/nvidia.gpg when: ansible_facts['os_family'] == "Debian" - name: Perform a cache update diff --git a/images/capi/ansible/roles/kubernetes/tasks/debian.yml b/images/capi/ansible/roles/kubernetes/tasks/debian.yml index 9a2089466c..8bc1b7bb5e 100644 --- a/images/capi/ansible/roles/kubernetes/tasks/debian.yml +++ b/images/capi/ansible/roles/kubernetes/tasks/debian.yml @@ -12,14 +12,29 @@ # See the License for the specific language governing permissions and # limitations under the License. --- -- name: Add the Kubernetes repo key - ansible.builtin.apt_key: +# apt-key was removed in Ubuntu 26.04+. Use signed-by keyring instead. +- name: Ensure /etc/apt/keyrings directory exists + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + mode: "0755" + +- name: Download the Kubernetes repo GPG key (armored) + ansible.builtin.get_url: url: "{{ kubernetes_deb_gpg_key }}" - state: present + dest: /etc/apt/keyrings/kubernetes-apt-keyring.gpg.asc + mode: "0644" + +- name: Dearmor the Kubernetes repo GPG key + ansible.builtin.shell: > + gpg --dearmor < /etc/apt/keyrings/kubernetes-apt-keyring.gpg.asc + > /etc/apt/keyrings/kubernetes-apt-keyring.gpg + args: + creates: /etc/apt/keyrings/kubernetes-apt-keyring.gpg - name: Add the Kubernetes repo ansible.builtin.apt_repository: - repo: deb {{ kubernetes_deb_repo }} / + repo: deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] {{ kubernetes_deb_repo }} / update_cache: true state: present mode: "0644" diff --git a/images/capi/ansible/roles/providers/tasks/azurecli.yml b/images/capi/ansible/roles/providers/tasks/azurecli.yml index a83e682362..057d994266 100644 --- a/images/capi/ansible/roles/providers/tasks/azurecli.yml +++ b/images/capi/ansible/roles/providers/tasks/azurecli.yml @@ -15,10 +15,24 @@ - name: Install Azure CLI when: ansible_facts['os_family'] == "Debian" block: - - name: Add Microsoft Package Repository Key - ansible.builtin.apt_key: + - name: Ensure /etc/apt/keyrings directory exists + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + mode: "0755" + + - name: Download Microsoft Package Repository Key (armored) + ansible.builtin.get_url: url: https://packages.microsoft.com/keys/microsoft.asc - state: present + dest: /etc/apt/keyrings/microsoft.asc + mode: "0644" + + - name: Dearmor Microsoft Package Repository Key + ansible.builtin.shell: > + gpg --dearmor < /etc/apt/keyrings/microsoft.asc + > /etc/apt/keyrings/microsoft.gpg + args: + creates: /etc/apt/keyrings/microsoft.gpg - name: Find Ubuntu Version ansible.builtin.command: @@ -32,9 +46,16 @@ register: host_arch changed_when: false + - name: Map unsupported codenames to nearest supported codename + ansible.builtin.set_fact: + azure_cli_codename: "{{ 'noble' if ubuntu_version.stdout == 'resolute' else ubuntu_version.stdout }}" + - name: Add Microsoft Package Repository ansible.builtin.apt_repository: - repo: 'deb [arch={{ host_arch.stdout }}] https://packages.microsoft.com/repos/azure-cli/ {{ ubuntu_version.stdout }} main' + repo: >- + deb [arch={{ host_arch.stdout }} signed-by=/etc/apt/keyrings/microsoft.gpg] + https://packages.microsoft.com/repos/azure-cli/ + {{ azure_cli_codename }} main state: present update_cache: true diff --git a/images/capi/ansible/roles/providers/tasks/main.yml b/images/capi/ansible/roles/providers/tasks/main.yml index 38b651856b..0ca778833a 100644 --- a/images/capi/ansible/roles/providers/tasks/main.yml +++ b/images/capi/ansible/roles/providers/tasks/main.yml @@ -113,7 +113,27 @@ # Some OS might disable cloud-final service on boot (rhel 7). # Enable all cloud-init services on boot. -- name: Make sure all cloud init services are enabled +# Since cloud-init 24.3, cloud-init.service was renamed to cloud-init-network.service +# https://discourse.ubuntu.com/t/upstream-release-of-cloud-init-24-3/48004 +# (Single Process Optimization). Ubuntu 26.04+ ships with this change. +- name: Gather service facts to detect cloud-init service names + ansible.builtin.service_facts: + when: ansible_facts['os_family'] != "Flatcar" + +- name: Make sure all cloud init services are enabled (cloud-init >= 24.3) + ansible.builtin.service: + name: "{{ item }}" + enabled: true + with_items: + - cloud-final + - cloud-config + - cloud-init-network + - cloud-init-local + when: + - ansible_facts['os_family'] != "Flatcar" + - "'cloud-init-network.service' in ansible_facts.services" + +- name: Make sure all cloud init services are enabled (cloud-init < 24.3) ansible.builtin.service: name: "{{ item }}" enabled: true @@ -122,7 +142,9 @@ - cloud-config - cloud-init - cloud-init-local - when: ansible_facts['os_family'] != "Flatcar" + when: + - ansible_facts['os_family'] != "Flatcar" + - "'cloud-init-network.service' not in ansible_facts.services" - name: Create cloud-init config file ansible.builtin.copy: diff --git a/images/capi/ansible/roles/security/tasks/falco.yml b/images/capi/ansible/roles/security/tasks/falco.yml index b3c129b6e2..02f3c1e84c 100644 --- a/images/capi/ansible/roles/security/tasks/falco.yml +++ b/images/capi/ansible/roles/security/tasks/falco.yml @@ -17,14 +17,28 @@ - name: Install Falco on Debian based systems when: ansible_facts['os_family'] == "Debian" block: - - name: Add Falco package signing key - ansible.builtin.apt_key: + - name: Ensure /etc/apt/keyrings directory exists + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + mode: "0755" + + - name: Download Falco package signing key (armored) + ansible.builtin.get_url: url: https://falco.org/repo/falcosecurity-packages.asc - state: present + dest: /etc/apt/keyrings/falcosecurity.asc + mode: "0644" + + - name: Dearmor Falco package signing key + ansible.builtin.shell: > + gpg --dearmor < /etc/apt/keyrings/falcosecurity.asc + > /etc/apt/keyrings/falcosecurity.gpg + args: + creates: /etc/apt/keyrings/falcosecurity.gpg - name: Add Falco apt repo ansible.builtin.apt_repository: - repo: deb https://download.falco.org/packages/deb stable main + repo: deb [signed-by=/etc/apt/keyrings/falcosecurity.gpg] https://download.falco.org/packages/deb stable main state: present filename: falcosecurity diff --git a/images/capi/ansible/roles/security/tasks/trivy.yml b/images/capi/ansible/roles/security/tasks/trivy.yml index 28ae28037e..6a077ddba0 100644 --- a/images/capi/ansible/roles/security/tasks/trivy.yml +++ b/images/capi/ansible/roles/security/tasks/trivy.yml @@ -17,14 +17,28 @@ - name: Install Trivy on Debian based systems when: ansible_facts['os_family'] == "Debian" block: - - name: Add Trivy package signing key - ansible.builtin.apt_key: + - name: Ensure /etc/apt/keyrings directory exists + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + mode: "0755" + + - name: Download Trivy package signing key (armored) + ansible.builtin.get_url: url: https://aquasecurity.github.io/trivy-repo/deb/public.key - state: present + dest: /etc/apt/keyrings/trivy.asc + mode: "0644" + + - name: Dearmor Trivy package signing key + ansible.builtin.shell: > + gpg --dearmor < /etc/apt/keyrings/trivy.asc + > /etc/apt/keyrings/trivy.gpg + args: + creates: /etc/apt/keyrings/trivy.gpg - name: Add Trivy apt repo ansible.builtin.apt_repository: - repo: "deb https://aquasecurity.github.io/trivy-repo/deb {{ ansible_facts['distribution_release'] }} main" + repo: "deb [signed-by=/etc/apt/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb {{ ansible_facts['distribution_release'] }} main" state: present filename: trivy diff --git a/images/capi/azure_targets.sh b/images/capi/azure_targets.sh index 2f03cbe7bc..1ddefd7120 100644 --- a/images/capi/azure_targets.sh +++ b/images/capi/azure_targets.sh @@ -1,4 +1,4 @@ -VHD_TARGETS="ubuntu-2204 ubuntu-2404 azurelinux-3 windows-2022-containerd" -SIG_TARGETS="ubuntu-2204 ubuntu-2404 azurelinux-3 windows-2022-containerd windows-2025-containerd flatcar" -SIG_GEN2_TARGETS="ubuntu-2204 ubuntu-2404 azurelinux-3 flatcar" -SIG_CVM_TARGETS="ubuntu-2204 ubuntu-2404 windows-2022-containerd" +VHD_TARGETS="ubuntu-2204 ubuntu-2404 ubuntu-2604 azurelinux-3 windows-2022-containerd" +SIG_TARGETS="ubuntu-2204 ubuntu-2404 ubuntu-2604 azurelinux-3 windows-2022-containerd windows-2025-containerd flatcar" +SIG_GEN2_TARGETS="ubuntu-2204 ubuntu-2404 ubuntu-2604 azurelinux-3 flatcar" +SIG_CVM_TARGETS="ubuntu-2204 ubuntu-2404 ubuntu-2604 windows-2022-containerd" diff --git a/images/capi/packer/ami/ubuntu-2604.json b/images/capi/packer/ami/ubuntu-2604.json new file mode 100644 index 0000000000..2879798599 --- /dev/null +++ b/images/capi/packer/ami/ubuntu-2604.json @@ -0,0 +1,14 @@ +{ + "ami_filter_arch": "x86_64", + "ami_filter_name": "ubuntu/images/*ubuntu-resolute-26.04-amd64-server-*", + "ami_filter_owners": "099720109477", + "ansible_extra_vars": "", + "arch": "amd64", + "build_name": "ubuntu-26.04", + "distribution": "Ubuntu", + "distribution_release": "resolute", + "distribution_version": "26.04", + "root_device_name": "/dev/sda1", + "source_ami": "", + "ssh_username": "ubuntu" +} diff --git a/images/capi/packer/azure/scripts/init-sig.sh b/images/capi/packer/azure/scripts/init-sig.sh index 4fde65c3d7..c62430ee05 100755 --- a/images/capi/packer/azure/scripts/init-sig.sh +++ b/images/capi/packer/azure/scripts/init-sig.sh @@ -81,6 +81,9 @@ case ${SIG_TARGET} in ubuntu-2404) create_image_definition ${SIG_TARGET} "24_04-lts" "V1" "Linux" ;; + ubuntu-2604) + create_image_definition ${SIG_TARGET} "26_04-lts" "V1" "Linux" + ;; azurelinux-3) create_image_definition ${SIG_TARGET} "azurelinux-3" "V1" "Linux" ;; @@ -120,6 +123,12 @@ case ${SIG_TARGET} in ubuntu-2404-cvm) create_image_definition ${SIG_TARGET} "24_04-lts-cvm" "V2" "Linux" ${SECURITY_TYPE_CVM_SUPPORTED_FEATURE} ;; + ubuntu-2604-gen2) + create_image_definition ${SIG_TARGET} "26_04-lts-gen2" "V2" "Linux" + ;; + ubuntu-2604-cvm) + create_image_definition ${SIG_TARGET} "26_04-lts-cvm" "V2" "Linux" ${SECURITY_TYPE_CVM_SUPPORTED_FEATURE} + ;; azurelinux-3-gen2) create_image_definition ${SIG_TARGET} "azurelinux-3-gen2" "V2" "Linux" ;; diff --git a/images/capi/packer/azure/ubuntu-2604-cvm.json b/images/capi/packer/azure/ubuntu-2604-cvm.json new file mode 100644 index 0000000000..361fca37ea --- /dev/null +++ b/images/capi/packer/azure/ubuntu-2604-cvm.json @@ -0,0 +1,9 @@ +{ + "build_name": "ubuntu-2604-cvm", + "distribution": "ubuntu", + "distribution_release": "resolute", + "distribution_version": "2604", + "image_offer": "ubuntu-26_04-lts", + "image_publisher": "Canonical", + "image_sku": "cvm" +} diff --git a/images/capi/packer/azure/ubuntu-2604-gen2.json b/images/capi/packer/azure/ubuntu-2604-gen2.json new file mode 100644 index 0000000000..da9d695f1c --- /dev/null +++ b/images/capi/packer/azure/ubuntu-2604-gen2.json @@ -0,0 +1,9 @@ +{ + "build_name": "ubuntu-2604-gen2", + "distribution": "ubuntu", + "distribution_release": "resolute", + "distribution_version": "2604", + "image_offer": "ubuntu-26_04-lts", + "image_publisher": "Canonical", + "image_sku": "server" +} diff --git a/images/capi/packer/azure/ubuntu-2604.json b/images/capi/packer/azure/ubuntu-2604.json new file mode 100644 index 0000000000..722be40b59 --- /dev/null +++ b/images/capi/packer/azure/ubuntu-2604.json @@ -0,0 +1,9 @@ +{ + "build_name": "ubuntu-2604", + "distribution": "ubuntu", + "distribution_release": "resolute", + "distribution_version": "2604", + "image_offer": "ubuntu-26_04-lts", + "image_publisher": "Canonical", + "image_sku": "server-gen1" +} diff --git a/images/capi/packer/digitalocean/ubuntu-2604.json b/images/capi/packer/digitalocean/ubuntu-2604.json new file mode 100644 index 0000000000..d34086e735 --- /dev/null +++ b/images/capi/packer/digitalocean/ubuntu-2604.json @@ -0,0 +1,5 @@ +{ + "build_name": "ubuntu-2604", + "snapshot_name_suffix": "on Ubuntu 26.04", + "source_image": "ubuntu-26-04-x64" +} diff --git a/images/capi/packer/gce/ubuntu-2604.json b/images/capi/packer/gce/ubuntu-2604.json new file mode 100644 index 0000000000..41fad01b89 --- /dev/null +++ b/images/capi/packer/gce/ubuntu-2604.json @@ -0,0 +1,9 @@ +{ + "build_name": "ubuntu-2604", + "distribution": "ubuntu", + "distribution_release": "resolute", + "distribution_version": "2604", + "source_image_family": "ubuntu-2604-lts-amd64", + "ssh_username": "ubuntu", + "zone": "us-central1-a" +} diff --git a/images/capi/packer/hcloud/ubuntu-2604.json b/images/capi/packer/hcloud/ubuntu-2604.json new file mode 100644 index 0000000000..66f9b0c8ba --- /dev/null +++ b/images/capi/packer/hcloud/ubuntu-2604.json @@ -0,0 +1,8 @@ +{ + "build_name": "ubuntu-2604", + "distribution": "ubuntu", + "distribution_release": "resolute", + "distribution_version": "2604", + "image": "ubuntu-26.04", + "ssh_username": "root" +} diff --git a/images/capi/packer/maas/linux/ubuntu/http/26.04.efi/meta-data b/images/capi/packer/maas/linux/ubuntu/http/26.04.efi/meta-data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/images/capi/packer/maas/linux/ubuntu/http/26.04.efi/user-data.tmpl b/images/capi/packer/maas/linux/ubuntu/http/26.04.efi/user-data.tmpl new file mode 100644 index 0000000000..0d43ca5e1b --- /dev/null +++ b/images/capi/packer/maas/linux/ubuntu/http/26.04.efi/user-data.tmpl @@ -0,0 +1,116 @@ +#cloud-config +# Copyright 2022 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# For more information on how autoinstall is configured, please refer to +# https://ubuntu.com/server/docs/install/autoinstall-reference +autoinstall: + version: 1 + # Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts + early-commands: + - systemctl stop ssh + # Configure the locale + locale: en_US.UTF-8 + keyboard: + layout: us + apt: + mirror-selection: + primary: + - uri: http://archive.ubuntu.com/ubuntu + # Create a single-partition with no swap space. Kubernetes + # really dislikes the idea of anyone else managing memory. + # For more information on how partitioning is configured, + # please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html. + storage: + grub: + reorder_uefi: false + replace_linux_default: false + config: + - ptable: gpt + path: /dev/sda + wipe: superblock-recursive + preserve: false + name: '' + grub_device: false + type: disk + id: disk-sda + - device: disk-sda + # Create EFI partition of 512MB same as in Ubuntu 20.04 + size: 536870912 + wipe: superblock + flag: boot + number: 1 + preserve: false + grub_device: true + type: partition + id: partition-0 + - fstype: fat32 + volume: partition-0 + preserve: false + type: format + id: format-0 + - device: disk-sda + size: -1 + wipe: superblock + flag: '' + number: 2 + preserve: false + grub_device: false + type: partition + id: partition-1 + - fstype: ext4 + volume: partition-1 + preserve: false + type: format + id: format-1 + - path: / + device: format-1 + type: mount + id: mount-1 + - path: /boot/efi + device: format-0 + type: mount + id: mount-0 + updates: 'all' + ssh: + install-server: true + allow-pw: true + # Customize the list of packages installed. + packages: + - open-vm-tools + # Create the default user. + # Ensures the "builder" user doesn't require a password to use sudo. + user-data: + users: + - name: builder + # openssl passwd -6 -salt -stdin <<< + passwd: $ENCRYPTED_SSH_PASSWORD + groups: [adm, cdrom, dip, plugdev, lxd, sudo] + lock-passwd: false + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + + # This command runs after all other steps; it: + # 1. Disables swapfiles + # 2. Removes the existing swapfile + # 3. Removes the swapfile entry from /etc/fstab + # 4. Cleans up any packages that are no longer required + # 5. Removes the cached list of packages + late-commands: + - swapoff -a + - rm -f /swapfile + - sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab + - apt-get purge --auto-remove -y + - rm -rf /var/lib/apt/lists/* diff --git a/images/capi/packer/maas/linux/ubuntu/http/26.04/meta-data b/images/capi/packer/maas/linux/ubuntu/http/26.04/meta-data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/images/capi/packer/maas/linux/ubuntu/http/26.04/user-data.tmpl b/images/capi/packer/maas/linux/ubuntu/http/26.04/user-data.tmpl new file mode 100644 index 0000000000..30edc45b19 --- /dev/null +++ b/images/capi/packer/maas/linux/ubuntu/http/26.04/user-data.tmpl @@ -0,0 +1,93 @@ +#cloud-config +# Copyright 2022 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# For more information on how autoinstall is configured, please refer to +# https://ubuntu.com/server/docs/install/autoinstall-reference +autoinstall: + version: 1 + # Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts + early-commands: + - systemctl stop ssh + # Configure the locale + locale: en_US.UTF-8 + keyboard: + layout: us + apt: + mirror-selection: + primary: + - uri: http://archive.ubuntu.com/ubuntu + # Create a single-partition with no swap space. Kubernetes + # really dislikes the idea of anyone else managing memory. + # For more information on how partitioning is configured, + # please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html. + storage: + grub: + replace_linux_default: false + config: + - type: disk + id: disk-0 + size: largest + grub_device: true + preserve: false + ptable: msdos + wipe: superblock + - type: partition + id: partition-0 + device: disk-0 + size: -1 + number: 1 + preserve: false + flag: boot + - type: format + id: format-0 + volume: partition-0 + fstype: ext4 + preserve: false + - type: mount + id: mount-0 + device: format-0 + path: / + updates: 'all' + ssh: + install-server: true + allow-pw: true + # Customize the list of packages installed. + packages: + - open-vm-tools + # Create the default user. + # Ensures the "builder" user doesn't require a password to use sudo. + user-data: + users: + - name: builder + # openssl passwd -6 -salt -stdin <<< + passwd: $ENCRYPTED_SSH_PASSWORD + groups: [adm, cdrom, dip, plugdev, lxd, sudo] + lock-passwd: false + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + + # This command runs after all other steps; it: + # 1. Disables swapfiles + # 2. Removes the existing swapfile + # 3. Removes the swapfile entry from /etc/fstab + # 4. Cleans up any packages that are no longer required + # 5. Removes the cached list of packages + late-commands: + - swapoff -a + - rm -f /swapfile + - sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab + - apt-get purge --auto-remove -y + - rm -rf /var/lib/apt/lists/* diff --git a/images/capi/packer/maas/maas-ubuntu-2604-efi.json b/images/capi/packer/maas/maas-ubuntu-2604-efi.json new file mode 100644 index 0000000000..018d504276 --- /dev/null +++ b/images/capi/packer/maas/maas-ubuntu-2604-efi.json @@ -0,0 +1,14 @@ +{ + "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/26.04.efi/'initrd /casper/initrdboot", + "build_name": "ubuntu-2604-efi", + "distribution_version": "2604", + "distro_name": "ubuntu", + "firmware": "OVMF.fd", + "guest_os_type": "ubuntu-64", + "iso_checksum": "dec49008a71f6098d0bcfc822021f4d042d5f2db279e4d75bdd981304f1ca5d9", + "iso_checksum_type": "sha256", + "iso_url": "https://releases.ubuntu.com/releases/26.04/ubuntu-26.04-live-server-amd64.iso", + "os_display_name": "Ubuntu 26.04", + "shutdown_command": "shutdown -P now", + "unmount_iso": "true" +} diff --git a/images/capi/packer/nutanix/ubuntu-2604.json b/images/capi/packer/nutanix/ubuntu-2604.json new file mode 100644 index 0000000000..6f2183341d --- /dev/null +++ b/images/capi/packer/nutanix/ubuntu-2604.json @@ -0,0 +1,8 @@ +{ + "build_name": "ubuntu-2604", + "distro_name": "ubuntu", + "guest_os_type": "Linux", + "image_url": "https://cloud-images.ubuntu.com/resolute/current/resolute-server-cloudimg-amd64.img", + "shutdown_command": "shutdown -P now", + "user_data": "I2Nsb3VkLWNvbmZpZwp1c2VyczoKICAtIG5hbWU6IGJ1aWxkZXIKICAgIHN1ZG86IFsnQUxMPShBTEwpIE5PUEFTU1dEOkFMTCddCiAgICBzaGVsbDogL2Jpbi9iYXNoCmNocGFzc3dkOgogIGxpc3Q6IHwKICAgIGJ1aWxkZXI6YnVpbGRlcgogIGV4cGlyZTogRmFsc2UKc3NoX3B3YXV0aDogVHJ1ZQo=" +} diff --git a/images/capi/packer/openstack/ubuntu-2604.json b/images/capi/packer/openstack/ubuntu-2604.json new file mode 100644 index 0000000000..e05505dfa5 --- /dev/null +++ b/images/capi/packer/openstack/ubuntu-2604.json @@ -0,0 +1,5 @@ +{ + "build_name": "ubuntu-2604", + "distro_name": "ubuntu", + "ssh_username": "ubuntu" +} diff --git a/images/capi/packer/outscale/ubuntu-2604.json b/images/capi/packer/outscale/ubuntu-2604.json new file mode 100644 index 0000000000..3b84cc68b3 --- /dev/null +++ b/images/capi/packer/outscale/ubuntu-2604.json @@ -0,0 +1,7 @@ +{ + "build_name": "ubuntu-2604", + "distribution": "ubuntu", + "distribution_release": "ubuntu", + "distribution_version": "2604", + "image_name": "Ubuntu-26.04-2026-04-22" +} diff --git a/images/capi/packer/ova/linux/ubuntu/http/26.04.efi/meta-data b/images/capi/packer/ova/linux/ubuntu/http/26.04.efi/meta-data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/images/capi/packer/ova/linux/ubuntu/http/26.04.efi/user-data.tmpl b/images/capi/packer/ova/linux/ubuntu/http/26.04.efi/user-data.tmpl new file mode 100644 index 0000000000..37b67cf07c --- /dev/null +++ b/images/capi/packer/ova/linux/ubuntu/http/26.04.efi/user-data.tmpl @@ -0,0 +1,111 @@ +#cloud-config +# Copyright 2024 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# For more information on how autoinstall is configured, please refer to +# https://ubuntu.com/server/docs/install/autoinstall-reference +autoinstall: + version: 1 + # Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts + early-commands: + - systemctl stop ssh + # Configure the locale + locale: en_US.UTF-8 + keyboard: + layout: us + mounts: + - [ swap, null ] + # For more information on how partitioning is configured, + # please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html. + storage: + swap: + size: 0 + grub: + reorder_uefi: false + replace_linux_default: false + config: + - ptable: gpt + path: /dev/sda + wipe: superblock-recursive + preserve: false + name: '' + grub_device: false + type: disk + id: disk-sda + - device: disk-sda + # Create EFI partition of 512MB same as in Ubuntu 20.04 + size: 536870912 + wipe: superblock + flag: boot + number: 1 + preserve: false + grub_device: true + type: partition + id: partition-0 + - fstype: fat32 + volume: partition-0 + preserve: false + type: format + id: format-0 + - device: disk-sda + size: -1 + wipe: superblock + flag: '' + number: 2 + preserve: false + grub_device: false + type: partition + id: partition-1 + - fstype: xfs + volume: partition-1 + preserve: false + type: format + id: format-1 + - path: / + device: format-1 + type: mount + id: mount-1 + - path: /boot/efi + device: format-0 + type: mount + id: mount-0 + updates: "all" + ssh: + install-server: true + allow-pw: true + # Customize the list of packages installed. + packages: + - open-vm-tools + # Create the default user. + # Ensures the "builder" user doesn't require a password to use sudo. + user-data: + users: + - name: builder + # openssl passwd -6 -salt -stdin <<< + passwd: $ENCRYPTED_SSH_PASSWORD + groups: [adm, cdrom, dip, plugdev, lxd, sudo] + lock-passwd: false + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + + # This command runs after all other steps; it: + # 1. Removes snapd, https://bugs.launchpad.net/subiquity/+bug/1946609 + # 2. Cleans up any packages that are no longer required + # 3. Removes the cached list of packages + late-commands: + - chroot /target apt-get purge -y snapd + - curtin in-target --target=/target -- apt-get purge --auto-remove -y + - curtin in-target --target=/target -- apt-get clean + - curtin in-target --target=/target -- rm -rf /var/lib/apt/lists/* diff --git a/images/capi/packer/ova/linux/ubuntu/http/26.04/meta-data b/images/capi/packer/ova/linux/ubuntu/http/26.04/meta-data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/images/capi/packer/ova/linux/ubuntu/http/26.04/user-data.tmpl b/images/capi/packer/ova/linux/ubuntu/http/26.04/user-data.tmpl new file mode 100644 index 0000000000..3e91ea071f --- /dev/null +++ b/images/capi/packer/ova/linux/ubuntu/http/26.04/user-data.tmpl @@ -0,0 +1,90 @@ +#cloud-config +# Copyright 2024 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# For more information on how autoinstall is configured, please refer to +# https://ubuntu.com/server/docs/install/autoinstall-reference +autoinstall: + version: 1 + # Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts + early-commands: + - systemctl stop ssh + # Configure the locale + locale: en_US.UTF-8 + keyboard: + layout: us + mounts: + - [ swap, null ] + # Create a single-partition with no swap space. Kubernetes + # really dislikes the idea of anyone else managing memory. + # For more information on how partitioning is configured, + # please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html. + storage: + swap: + size: 0 + grub: + replace_linux_default: false + config: + - type: disk + id: disk-0 + size: largest + grub_device: true + preserve: false + ptable: msdos + wipe: superblock + - type: partition + id: partition-0 + device: disk-0 + size: -1 + number: 1 + preserve: false + flag: boot + - type: format + id: format-0 + volume: partition-0 + fstype: xfs + preserve: false + - type: mount + id: mount-0 + device: format-0 + path: / + updates: 'all' + ssh: + install-server: true + allow-pw: true + # Customize the list of packages installed. + packages: + - open-vm-tools + # Create the default user. + # Ensures the "builder" user doesn't require a password to use sudo. + user-data: + users: + - name: builder + # openssl passwd -6 -salt -stdin <<< + passwd: $ENCRYPTED_SSH_PASSWORD + groups: [adm, cdrom, dip, plugdev, lxd, sudo] + lock-passwd: false + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + + # This command runs after all other steps; it: + # 1. Removes snapd, https://bugs.launchpad.net/subiquity/+bug/1946609 + # 2. Cleans up any packages that are no longer required + # 3. Removes the cached list of packages + late-commands: + - chroot /target apt-get purge -y snapd + - curtin in-target --target=/target -- apt-get purge --auto-remove -y + - curtin in-target --target=/target -- apt-get clean + - curtin in-target --target=/target -- rm -rf /var/lib/apt/lists/* diff --git a/images/capi/packer/ova/ubuntu-2604-efi.json b/images/capi/packer/ova/ubuntu-2604-efi.json new file mode 100644 index 0000000000..d8d2e3f476 --- /dev/null +++ b/images/capi/packer/ova/ubuntu-2604-efi.json @@ -0,0 +1,19 @@ +{ + "boot_command_prefix": "clinux /casper/vmlinuz ipv6.disable={{ user `boot_disable_ipv6` }} --- autoinstall ds='nocloud;'initrd /casper/initrdboot", + "boot_disable_ipv6": "0", + "build_name": "ubuntu-2604-efi", + "cd_content_location": "./packer/ova/linux/{{user `distro_name`}}/http/26.04.efi/*", + "cd_label": "cidata", + "distro_arch": "amd64", + "distro_name": "ubuntu", + "distro_version": "26.04", + "firmware": "efi", + "floppy_dirs": "", + "guest_os_type": "ubuntu-64", + "iso_checksum": "dec49008a71f6098d0bcfc822021f4d042d5f2db279e4d75bdd981304f1ca5d9", + "iso_checksum_type": "sha256", + "iso_url": "https://releases.ubuntu.com/resolute/ubuntu-26.04-live-server-amd64.iso", + "os_display_name": "Ubuntu 26.04", + "shutdown_command": "shutdown -P now", + "vsphere_guest_os_type": "ubuntu64Guest" +} diff --git a/images/capi/packer/ova/ubuntu-2604.json b/images/capi/packer/ova/ubuntu-2604.json new file mode 100644 index 0000000000..ed2d98e51a --- /dev/null +++ b/images/capi/packer/ova/ubuntu-2604.json @@ -0,0 +1,18 @@ +{ + "boot_command_prefix": "clinux /casper/vmlinuz ipv6.disable={{ user `boot_disable_ipv6` }} --- autoinstall ds='nocloud;'initrd /casper/initrdboot", + "boot_disable_ipv6": "0", + "build_name": "ubuntu-2604", + "cd_content_location": "./packer/ova/linux/{{user `distro_name`}}/http/{{user `distro_version`}}/*", + "cd_label": "cidata", + "distro_arch": "amd64", + "distro_name": "ubuntu", + "distro_version": "26.04", + "floppy_dirs": "", + "guest_os_type": "ubuntu-64", + "iso_checksum": "dec49008a71f6098d0bcfc822021f4d042d5f2db279e4d75bdd981304f1ca5d9", + "iso_checksum_type": "sha256", + "iso_url": "https://releases.ubuntu.com/resolute/ubuntu-26.04-live-server-amd64.iso", + "os_display_name": "Ubuntu 26.04", + "shutdown_command": "shutdown -P now", + "vsphere_guest_os_type": "ubuntu64Guest" +} diff --git a/images/capi/packer/proxmox/linux/ubuntu/http/26.04.efi/meta-data b/images/capi/packer/proxmox/linux/ubuntu/http/26.04.efi/meta-data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/images/capi/packer/proxmox/linux/ubuntu/http/26.04.efi/user-data.tmpl b/images/capi/packer/proxmox/linux/ubuntu/http/26.04.efi/user-data.tmpl new file mode 100644 index 0000000000..f731532a65 --- /dev/null +++ b/images/capi/packer/proxmox/linux/ubuntu/http/26.04.efi/user-data.tmpl @@ -0,0 +1,99 @@ +#cloud-config +autoinstall: + version: 1 + # Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts + early-commands: + - systemctl stop ssh + # Configure the locale + locale: en_US.UTF-8 + keyboard: + layout: us + ssh: + install-server: true + allow-pw: true + packages: + - qemu-guest-agent + apt: + mirror-selection: + primary: + - uri: http://archive.ubuntu.com/ubuntu + # Create a single-partition with no swap space. Kubernetes + # really dislikes the idea of anyone else managing memory. + # For more information on how partitioning is configured, + # please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html. + storage: + swap: + size: 0 + grub: + reorder_uefi: false + replace_linux_default: false + config: + - ptable: gpt + path: /dev/sda + wipe: superblock-recursive + preserve: false + name: '' + grub_device: false + type: disk + id: disk-sda + - device: disk-sda + size: 536870912 + wipe: superblock + flag: boot + number: 1 + preserve: false + grub_device: true + type: partition + id: partition-0 + - fstype: fat32 + volume: partition-0 + preserve: false + type: format + id: format-0 + - device: disk-sda + size: -1 + wipe: superblock + flag: '' + number: 2 + preserve: false + grub_device: false + type: partition + id: partition-1 + - fstype: ext4 + volume: partition-1 + preserve: false + type: format + id: format-1 + - path: / + device: format-1 + type: mount + id: mount-1 + - path: /boot/efi + device: format-0 + type: mount + id: mount-0 + updates: 'all' + # Create the default user. + # Ensures the "builder" user doesn't require a password to use sudo. + user-data: + users: + - name: builder + # openssl passwd -6 -salt -stdin <<< + passwd: $ENCRYPTED_SSH_PASSWORD + groups: [adm, cdrom, dip, plugdev, lxd, sudo] + lock-passwd: false + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + + # This command runs after all other steps; it: + # 1. Disables swapfiles + # 2. Removes the existing swapfile + # 3. Removes the swapfile entry from /etc/fstab + # 4. Cleans up any packages that are no longer required + # 5. Removes the cached list of packages + late-commands: + - swapoff -a + - rm -f /swapfile + - sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab + - apt-get purge --auto-remove -y + - rm -rf /var/lib/apt/lists/* diff --git a/images/capi/packer/proxmox/linux/ubuntu/http/26.04/meta-data b/images/capi/packer/proxmox/linux/ubuntu/http/26.04/meta-data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/images/capi/packer/proxmox/linux/ubuntu/http/26.04/user-data.tmpl b/images/capi/packer/proxmox/linux/ubuntu/http/26.04/user-data.tmpl new file mode 100644 index 0000000000..f4b29aa247 --- /dev/null +++ b/images/capi/packer/proxmox/linux/ubuntu/http/26.04/user-data.tmpl @@ -0,0 +1,75 @@ +#cloud-config +autoinstall: + version: 1 + # Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts + early-commands: + - systemctl stop ssh + # Configure the locale + locale: en_US.UTF-8 + keyboard: + layout: us + ssh: + install-server: true + allow-pw: true + packages: + - qemu-guest-agent + apt: + mirror-selection: + primary: + - uri: http://archive.ubuntu.com/ubuntu + # Create a single-partition with no swap space. Kubernetes + # really dislikes the idea of anyone else managing memory. + # For more information on how partitioning is configured, + # please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html. + storage: + grub: + replace_linux_default: false + config: + - type: disk + id: disk-0 + size: largest + grub_device: true + preserve: false + ptable: msdos + wipe: superblock + - type: partition + id: partition-0 + device: disk-0 + size: -1 + number: 1 + preserve: false + flag: boot + - type: format + id: format-0 + volume: partition-0 + fstype: ext4 + preserve: false + - type: mount + id: mount-0 + device: format-0 + path: / + updates: 'all' + # Create the default user. + # Ensures the "builder" user doesn't require a password to use sudo. + user-data: + users: + - name: builder + # openssl passwd -6 -salt -stdin <<< + passwd: $ENCRYPTED_SSH_PASSWORD + groups: [adm, cdrom, dip, plugdev, lxd, sudo] + lock-passwd: false + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + + # This command runs after all other steps; it: + # 1. Disables swapfiles + # 2. Removes the existing swapfile + # 3. Removes the swapfile entry from /etc/fstab + # 4. Cleans up any packages that are no longer required + # 5. Removes the cached list of packages + late-commands: + - swapoff -a + - rm -f /swapfile + - sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab + - apt-get purge --auto-remove -y + - rm -rf /var/lib/apt/lists/* diff --git a/images/capi/packer/proxmox/ubuntu-2604-efi.json b/images/capi/packer/proxmox/ubuntu-2604-efi.json new file mode 100644 index 0000000000..2d7a055386 --- /dev/null +++ b/images/capi/packer/proxmox/ubuntu-2604-efi.json @@ -0,0 +1,14 @@ +{ + "bios": "ovmf", + "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/26.04/'initrd /casper/initrdboot", + "build_name": "ubuntu-2604-efi", + "distribution_version": "2604", + "distro_name": "ubuntu", + "iso_checksum": "dec49008a71f6098d0bcfc822021f4d042d5f2db279e4d75bdd981304f1ca5d9", + "iso_checksum_type": "sha256", + "iso_file": "{{env `ISO_FILE`}}", + "iso_url": "https://releases.ubuntu.com/resolute/ubuntu-26.04-live-server-amd64.iso", + "os_display_name": "Ubuntu 26.04", + "unmount_iso": "true", + "version": "26.04" +} diff --git a/images/capi/packer/proxmox/ubuntu-2604.json b/images/capi/packer/proxmox/ubuntu-2604.json new file mode 100644 index 0000000000..417214f4c7 --- /dev/null +++ b/images/capi/packer/proxmox/ubuntu-2604.json @@ -0,0 +1,14 @@ +{ + "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/26.04/'initrd /casper/initrdboot", + "build_name": "ubuntu-2604", + "distribution_version": "2604", + "distro_name": "ubuntu", + "iso_checksum": "dec49008a71f6098d0bcfc822021f4d042d5f2db279e4d75bdd981304f1ca5d9", + "iso_checksum_type": "sha256", + "iso_file": "{{env `ISO_FILE`}}", + "iso_url": "https://releases.ubuntu.com/resolute/ubuntu-26.04-live-server-amd64.iso", + "os_display_name": "Ubuntu 26.04", + "source_image": "ubuntu-20-04-x64", + "unmount_iso": "true", + "version": "26.04" +} diff --git a/images/capi/packer/qemu/linux/ubuntu/http/26.04.efi/meta-data b/images/capi/packer/qemu/linux/ubuntu/http/26.04.efi/meta-data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/images/capi/packer/qemu/linux/ubuntu/http/26.04.efi/user-data.tmpl b/images/capi/packer/qemu/linux/ubuntu/http/26.04.efi/user-data.tmpl new file mode 100644 index 0000000000..0d43ca5e1b --- /dev/null +++ b/images/capi/packer/qemu/linux/ubuntu/http/26.04.efi/user-data.tmpl @@ -0,0 +1,116 @@ +#cloud-config +# Copyright 2022 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# For more information on how autoinstall is configured, please refer to +# https://ubuntu.com/server/docs/install/autoinstall-reference +autoinstall: + version: 1 + # Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts + early-commands: + - systemctl stop ssh + # Configure the locale + locale: en_US.UTF-8 + keyboard: + layout: us + apt: + mirror-selection: + primary: + - uri: http://archive.ubuntu.com/ubuntu + # Create a single-partition with no swap space. Kubernetes + # really dislikes the idea of anyone else managing memory. + # For more information on how partitioning is configured, + # please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html. + storage: + grub: + reorder_uefi: false + replace_linux_default: false + config: + - ptable: gpt + path: /dev/sda + wipe: superblock-recursive + preserve: false + name: '' + grub_device: false + type: disk + id: disk-sda + - device: disk-sda + # Create EFI partition of 512MB same as in Ubuntu 20.04 + size: 536870912 + wipe: superblock + flag: boot + number: 1 + preserve: false + grub_device: true + type: partition + id: partition-0 + - fstype: fat32 + volume: partition-0 + preserve: false + type: format + id: format-0 + - device: disk-sda + size: -1 + wipe: superblock + flag: '' + number: 2 + preserve: false + grub_device: false + type: partition + id: partition-1 + - fstype: ext4 + volume: partition-1 + preserve: false + type: format + id: format-1 + - path: / + device: format-1 + type: mount + id: mount-1 + - path: /boot/efi + device: format-0 + type: mount + id: mount-0 + updates: 'all' + ssh: + install-server: true + allow-pw: true + # Customize the list of packages installed. + packages: + - open-vm-tools + # Create the default user. + # Ensures the "builder" user doesn't require a password to use sudo. + user-data: + users: + - name: builder + # openssl passwd -6 -salt -stdin <<< + passwd: $ENCRYPTED_SSH_PASSWORD + groups: [adm, cdrom, dip, plugdev, lxd, sudo] + lock-passwd: false + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + + # This command runs after all other steps; it: + # 1. Disables swapfiles + # 2. Removes the existing swapfile + # 3. Removes the swapfile entry from /etc/fstab + # 4. Cleans up any packages that are no longer required + # 5. Removes the cached list of packages + late-commands: + - swapoff -a + - rm -f /swapfile + - sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab + - apt-get purge --auto-remove -y + - rm -rf /var/lib/apt/lists/* diff --git a/images/capi/packer/qemu/linux/ubuntu/http/26.04/meta-data b/images/capi/packer/qemu/linux/ubuntu/http/26.04/meta-data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/images/capi/packer/qemu/linux/ubuntu/http/26.04/user-data.tmpl b/images/capi/packer/qemu/linux/ubuntu/http/26.04/user-data.tmpl new file mode 100644 index 0000000000..30edc45b19 --- /dev/null +++ b/images/capi/packer/qemu/linux/ubuntu/http/26.04/user-data.tmpl @@ -0,0 +1,93 @@ +#cloud-config +# Copyright 2022 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# For more information on how autoinstall is configured, please refer to +# https://ubuntu.com/server/docs/install/autoinstall-reference +autoinstall: + version: 1 + # Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts + early-commands: + - systemctl stop ssh + # Configure the locale + locale: en_US.UTF-8 + keyboard: + layout: us + apt: + mirror-selection: + primary: + - uri: http://archive.ubuntu.com/ubuntu + # Create a single-partition with no swap space. Kubernetes + # really dislikes the idea of anyone else managing memory. + # For more information on how partitioning is configured, + # please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html. + storage: + grub: + replace_linux_default: false + config: + - type: disk + id: disk-0 + size: largest + grub_device: true + preserve: false + ptable: msdos + wipe: superblock + - type: partition + id: partition-0 + device: disk-0 + size: -1 + number: 1 + preserve: false + flag: boot + - type: format + id: format-0 + volume: partition-0 + fstype: ext4 + preserve: false + - type: mount + id: mount-0 + device: format-0 + path: / + updates: 'all' + ssh: + install-server: true + allow-pw: true + # Customize the list of packages installed. + packages: + - open-vm-tools + # Create the default user. + # Ensures the "builder" user doesn't require a password to use sudo. + user-data: + users: + - name: builder + # openssl passwd -6 -salt -stdin <<< + passwd: $ENCRYPTED_SSH_PASSWORD + groups: [adm, cdrom, dip, plugdev, lxd, sudo] + lock-passwd: false + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + + # This command runs after all other steps; it: + # 1. Disables swapfiles + # 2. Removes the existing swapfile + # 3. Removes the swapfile entry from /etc/fstab + # 4. Cleans up any packages that are no longer required + # 5. Removes the cached list of packages + late-commands: + - swapoff -a + - rm -f /swapfile + - sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab + - apt-get purge --auto-remove -y + - rm -rf /var/lib/apt/lists/* diff --git a/images/capi/packer/qemu/qemu-ubuntu-2604-efi.json b/images/capi/packer/qemu/qemu-ubuntu-2604-efi.json new file mode 100644 index 0000000000..46c250c6cd --- /dev/null +++ b/images/capi/packer/qemu/qemu-ubuntu-2604-efi.json @@ -0,0 +1,15 @@ +{ + "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/26.04.efi/'initrd /casper/initrdboot", + "build_name": "ubuntu-2604-efi", + "distribution_version": "2604", + "distro_name": "ubuntu", + "firmware": "OVMF.fd", + "guest_os_type": "ubuntu-64", + "iso_checksum": "dec49008a71f6098d0bcfc822021f4d042d5f2db279e4d75bdd981304f1ca5d9", + "iso_checksum_type": "sha256", + "iso_url": "https://releases.ubuntu.com/releases/26.04/ubuntu-26.04-live-server-amd64.iso", + "memory": "4096", + "os_display_name": "Ubuntu 26.04", + "shutdown_command": "shutdown -P now", + "unmount_iso": "true" +} diff --git a/images/capi/packer/qemu/qemu-ubuntu-2604.json b/images/capi/packer/qemu/qemu-ubuntu-2604.json new file mode 100644 index 0000000000..6d9544e187 --- /dev/null +++ b/images/capi/packer/qemu/qemu-ubuntu-2604.json @@ -0,0 +1,14 @@ +{ + "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/26.04/'initrd /casper/initrdboot", + "build_name": "ubuntu-2604", + "distribution_version": "2604", + "distro_name": "ubuntu", + "guest_os_type": "ubuntu-64", + "iso_checksum": "dec49008a71f6098d0bcfc822021f4d042d5f2db279e4d75bdd981304f1ca5d9", + "iso_checksum_type": "sha256", + "iso_url": "https://releases.ubuntu.com/releases/26.04/ubuntu-26.04-live-server-amd64.iso", + "memory": "4096", + "os_display_name": "Ubuntu 26.04", + "shutdown_command": "shutdown -P now", + "unmount_iso": "true" +} diff --git a/images/capi/packer/raw/linux/ubuntu/http/26.04.efi/meta-data b/images/capi/packer/raw/linux/ubuntu/http/26.04.efi/meta-data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/images/capi/packer/raw/linux/ubuntu/http/26.04.efi/user-data.tmpl b/images/capi/packer/raw/linux/ubuntu/http/26.04.efi/user-data.tmpl new file mode 100644 index 0000000000..5657d3fb98 --- /dev/null +++ b/images/capi/packer/raw/linux/ubuntu/http/26.04.efi/user-data.tmpl @@ -0,0 +1,114 @@ +#cloud-config +# Copyright 2025 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# For more information on how autoinstall is configured, please refer to +# https://ubuntu.com/server/docs/install/autoinstall-reference +autoinstall: + version: 1 + # Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts + early-commands: + - systemctl stop ssh + # Configure the locale + locale: en_US.UTF-8 + keyboard: + layout: us + # For more information on how partitioning is configured, + # please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html. + storage: + swap: + size: 0 + grub: + reorder_uefi: false + replace_linux_default: false + config: + - ptable: gpt + path: /dev/sda + wipe: superblock-recursive + preserve: false + name: '' + grub_device: false + type: disk + id: disk-sda + - device: disk-sda + size: 536870912 + wipe: superblock + flag: boot + number: 1 + preserve: false + grub_device: true + type: partition + id: partition-0 + - fstype: fat32 + volume: partition-0 + preserve: false + type: format + id: format-0 + - device: disk-sda + size: -1 + wipe: superblock + flag: '' + number: 2 + preserve: false + grub_device: false + type: partition + id: partition-1 + - fstype: ext4 + volume: partition-1 + preserve: false + type: format + id: format-1 + - path: / + device: format-1 + type: mount + id: mount-1 + - path: /boot/efi + device: format-0 + type: mount + id: mount-0 + apt: + fallback: offline-install + updates: 'all' + ssh: + install-server: true + allow-pw: true + + # Create the default user. + # Ensures the "builder" user doesn't require a password to use sudo. + user-data: + users: + - name: builder + # openssl passwd -6 -salt -stdin <<< + passwd: $ENCRYPTED_SSH_PASSWORD + groups: [adm, cdrom, dip, plugdev, lxd, sudo] + lock-passwd: false + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + + # This command runs after all other steps; it: + # 1. Disables swapfiles + # 2. Removes the existing swapfile + # 3. Removes the swapfile entry from /etc/fstab + # 4. Removes snapd, https://bugs.launchpad.net/subiquity/+bug/1946609 + # 5. Cleans up any packages that are no longer required + # 6. Removes the cached list of packages + late-commands: + - curtin in-target --target=/target -- swapoff -a + - curtin in-target --target=/target -- rm -f /swap.img + - curtin in-target --target=/target -- sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab + - chroot /target apt-get purge -y snapd + - curtin in-target --target=/target -- apt-get purge --auto-remove -y + - curtin in-target --target=/target -- apt-get clean + - curtin in-target --target=/target -- rm -rf /var/lib/apt/lists/* diff --git a/images/capi/packer/raw/linux/ubuntu/http/26.04/meta-data b/images/capi/packer/raw/linux/ubuntu/http/26.04/meta-data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/images/capi/packer/raw/linux/ubuntu/http/26.04/user-data.tmpl b/images/capi/packer/raw/linux/ubuntu/http/26.04/user-data.tmpl new file mode 100644 index 0000000000..e89ae2f3cc --- /dev/null +++ b/images/capi/packer/raw/linux/ubuntu/http/26.04/user-data.tmpl @@ -0,0 +1,92 @@ +#cloud-config +# Copyright 2025 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# For more information on how autoinstall is configured, please refer to +# https://ubuntu.com/server/docs/install/autoinstall-reference +autoinstall: + version: 1 + # Disable ssh server during installation, otherwise packer tries to connect and exceed max attempts + early-commands: + - systemctl stop ssh + # Configure the locale + locale: en_US.UTF-8 + keyboard: + layout: us + # For more information on how partitioning is configured, + # please refer to https://curtin.readthedocs.io/en/latest/topics/storage.html. + storage: + swap: + size: 0 + grub: + replace_linux_default: false + config: + - type: disk + id: disk-0 + size: largest + grub_device: true + preserve: false + ptable: msdos + wipe: superblock + - type: partition + id: partition-0 + device: disk-0 + size: -1 + number: 1 + preserve: false + flag: boot + - type: format + id: format-0 + volume: partition-0 + fstype: ext4 + preserve: false + - type: mount + id: mount-0 + device: format-0 + path: / + apt: + fallback: offline-install + updates: 'all' + ssh: + install-server: true + allow-pw: true + + # Create the default user. + # Ensures the "builder" user doesn't require a password to use sudo. + user-data: + users: + - name: builder + # openssl passwd -6 -salt -stdin <<< + passwd: $ENCRYPTED_SSH_PASSWORD + groups: [adm, cdrom, dip, plugdev, lxd, sudo] + lock-passwd: false + sudo: ALL=(ALL) NOPASSWD:ALL + shell: /bin/bash + + # This command runs after all other steps; it: + # 1. Disables swapfiles + # 2. Removes the existing swapfile + # 3. Removes the swapfile entry from /etc/fstab + # 4. Removes snapd, https://bugs.launchpad.net/subiquity/+bug/1946609 + # 5. Cleans up any packages that are no longer required + # 6. Removes the cached list of packages + late-commands: + - curtin in-target --target=/target -- swapoff -a + - curtin in-target --target=/target -- rm -f /swap.img + - curtin in-target --target=/target -- sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab + - chroot /target apt-get purge -y snapd + - curtin in-target --target=/target -- apt-get purge --auto-remove -y + - curtin in-target --target=/target -- apt-get clean + - curtin in-target --target=/target -- rm -rf /var/lib/apt/lists/* diff --git a/images/capi/packer/raw/raw-ubuntu-2604-efi.json b/images/capi/packer/raw/raw-ubuntu-2604-efi.json new file mode 100644 index 0000000000..2044a5dd61 --- /dev/null +++ b/images/capi/packer/raw/raw-ubuntu-2604-efi.json @@ -0,0 +1,17 @@ +{ + "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/26.04.efi/'initrd /casper/initrdboot", + "build_name": "ubuntu-2604-efi", + "build_target": "raw", + "distro_arch": "amd64", + "distro_name": "ubuntu", + "distro_version": "26.04", + "distro_version_slug": "2604", + "firmware": "OVMF.fd", + "guest_os_type": "ubuntu-64", + "iso_checksum": "dec49008a71f6098d0bcfc822021f4d042d5f2db279e4d75bdd981304f1ca5d9", + "iso_checksum_type": "sha256", + "iso_url": "https://releases.ubuntu.com/releases/26.04/ubuntu-26.04-live-server-amd64.iso", + "os_display_name": "Ubuntu 26.04", + "shutdown_command": "shutdown -P now", + "unmount_iso": "true" +} diff --git a/images/capi/packer/raw/raw-ubuntu-2604.json b/images/capi/packer/raw/raw-ubuntu-2604.json new file mode 100644 index 0000000000..4b53e183b0 --- /dev/null +++ b/images/capi/packer/raw/raw-ubuntu-2604.json @@ -0,0 +1,16 @@ +{ + "boot_command_prefix": "clinux /casper/vmlinuz --- autoinstall ds='nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/26.04/'initrd /casper/initrdboot", + "build_name": "ubuntu-2604", + "build_target": "raw", + "distro_arch": "amd64", + "distro_name": "ubuntu", + "distro_version": "26.04", + "distro_version_slug": "2604", + "guest_os_type": "ubuntu-64", + "iso_checksum": "dec49008a71f6098d0bcfc822021f4d042d5f2db279e4d75bdd981304f1ca5d9", + "iso_checksum_type": "sha256", + "iso_url": "https://releases.ubuntu.com/releases/26.04/ubuntu-26.04-live-server-amd64.iso", + "os_display_name": "Ubuntu 26.04", + "shutdown_command": "shutdown -P now", + "unmount_iso": "true" +} diff --git a/images/capi/packer/scaleway/ubuntu-2604.json b/images/capi/packer/scaleway/ubuntu-2604.json new file mode 100644 index 0000000000..a09945d444 --- /dev/null +++ b/images/capi/packer/scaleway/ubuntu-2604.json @@ -0,0 +1,6 @@ +{ + "build_name": "ubuntu-2604", + "distribution": "ubuntu", + "distribution_version": "2604", + "image": "ubuntu_resolute" +} diff --git a/images/capi/packer/vultr/ubuntu-2604.json b/images/capi/packer/vultr/ubuntu-2604.json new file mode 100644 index 0000000000..322a4b3988 --- /dev/null +++ b/images/capi/packer/vultr/ubuntu-2604.json @@ -0,0 +1,6 @@ +{ + "build_name": "ubuntu-2604", + "os": "2260", + "snapshot_name_suffix": "on Ubuntu 26.04", + "source_image": "ubuntu-26-04-x64" +}