mirror of
				https://github.com/siderolabs/talos.git
				synced 2025-10-31 00:11:36 +01:00 
			
		
		
		
	This allows to pass direct URLs to Image Factory assets for disk image/ISO/vmlinuz/initramfs, so that we can test Image Factory with Talos. Also add an integration test for Image Factory. Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| set -eou pipefail
 | |
| 
 | |
| # shellcheck source=/dev/null
 | |
| source ./hack/test/e2e.sh
 | |
| 
 | |
| PROVISIONER=qemu
 | |
| CLUSTER_NAME="e2e-${PROVISIONER}"
 | |
| 
 | |
| FACTORY_HOSTNAME=${FACTORY_HOSTNAME:-factory.talos.dev}
 | |
| PXE_FACTORY_HOSTNAME=${PXE_FACTORY_HOSTNAME:-pxe.factory.talos.dev}
 | |
| FACTORY_SCHEME=${FACTORY_SCHEME:-https}
 | |
| INSTALLER_IMAGE_NAME=${INSTALLER_IMAGE_NAME:-installer}
 | |
| 
 | |
| case "${FACTORY_BOOT_METHOD:-iso}" in
 | |
|   iso)
 | |
|     QEMU_FLAGS+=("--iso-path=${FACTORY_SCHEME}://${FACTORY_HOSTNAME}/image/${FACTORY_SCHEMATIC}/${FACTORY_VERSION}/metal-amd64.iso")
 | |
|     ;;
 | |
|   disk-image)
 | |
|     QEMU_FLAGS+=("--disk-image-path=${FACTORY_SCHEME}://${FACTORY_HOSTNAME}/image/${FACTORY_SCHEMATIC}/${FACTORY_VERSION}/metal-amd64.raw.xz")
 | |
|     ;;
 | |
|   ipxe)
 | |
|     QEMU_FLAGS+=("--ipxe-boot-script=${FACTORY_SCHEME}://${PXE_FACTORY_HOSTNAME}/pxe/${FACTORY_SCHEMATIC}/${FACTORY_VERSION}/metal-amd64")
 | |
|     ;;
 | |
|   secureboot-iso)
 | |
|     QEMU_FLAGS+=("--iso-path=${FACTORY_SCHEME}://${FACTORY_HOSTNAME}/image/${FACTORY_SCHEMATIC}/${FACTORY_VERSION}/metal-amd64-secureboot.iso" "--with-tpm2" "--encrypt-ephemeral" "--encrypt-state" "--disk-encryption-key-types=tpm")
 | |
|     INSTALLER_IMAGE_NAME=installer-secureboot
 | |
|     ;;
 | |
| esac
 | |
| 
 | |
| function assert_secureboot {
 | |
|   if [[ "${FACTORY_BOOT_METHOD:-iso}" != "secureboot-iso" ]]; then
 | |
|     return
 | |
|   fi
 | |
| 
 | |
|   ${TALOSCTL} get securitystate -o json
 | |
|   ${TALOSCTL} get securitystate -o json | jq -e '.spec.secureBoot == true'
 | |
| }
 | |
| 
 | |
| function create_cluster {
 | |
|   build_registry_mirrors
 | |
| 
 | |
|   "${TALOSCTL}" cluster create \
 | |
|     --provisioner="${PROVISIONER}" \
 | |
|     --name="${CLUSTER_NAME}" \
 | |
|     --kubernetes-version="${KUBERNETES_VERSION}" \
 | |
|     --controlplanes=3 \
 | |
|     --workers="${QEMU_WORKERS:-1}" \
 | |
|     --disk=15360 \
 | |
|     --mtu=1450 \
 | |
|     --memory=2048 \
 | |
|     --memory-workers="${QEMU_MEMORY_WORKERS:-2048}" \
 | |
|     --cpus="${QEMU_CPUS:-2}" \
 | |
|     --cpus-workers="${QEMU_CPUS_WORKERS:-2}" \
 | |
|     --cidr=172.20.1.0/24 \
 | |
|     --cni-bundle-url="${ARTIFACTS}/talosctl-cni-bundle-\${ARCH}.tar.gz" \
 | |
|     --skip-injecting-config \
 | |
|     --with-apply-config \
 | |
|     --talos-version="${FACTORY_VERSION}" \
 | |
|     --install-image="${FACTORY_HOSTNAME}/${INSTALLER_IMAGE_NAME}/${FACTORY_SCHEMATIC}:${FACTORY_VERSION}" \
 | |
|     --crashdump \
 | |
|     "${REGISTRY_MIRROR_FLAGS[@]}" \
 | |
|     "${QEMU_FLAGS[@]}"
 | |
| 
 | |
|     ${TALOSCTL} config node 172.20.1.2
 | |
| }
 | |
| 
 | |
| function destroy_cluster() {
 | |
|   "${TALOSCTL}" cluster destroy --name "${CLUSTER_NAME}" --provisioner "${PROVISIONER}"
 | |
| }
 | |
| 
 | |
| create_cluster
 | |
| 
 | |
| ${TALOSCTL} health --run-e2e
 | |
| ${TALOSCTL} version | grep "${FACTORY_VERSION}"
 | |
| ${TALOSCTL} get extensions | grep "${FACTORY_SCHEMATIC}"
 | |
| assert_secureboot
 | |
| 
 | |
| if [[ "${FACTORY_UPGRADE:-false}" == "true" ]]; then
 | |
|     ${TALOSCTL} upgrade -i "${FACTORY_HOSTNAME}/${INSTALLER_IMAGE_NAME}/${FACTORY_UPGRADE_SCHEMATIC:-$FACTORY_SCHEMATIC}:${FACTORY_UPGRADE_VERSION:-$FACTORY_VERSION}"
 | |
|     ${TALOSCTL} version | grep "${FACTORY_UPGRADE_VERSION:-$FACTORY_VERSION}"
 | |
|     ${TALOSCTL} get extensions | grep "${FACTORY_UPGRADE_SCHEMATIC:-$FACTORY_SCHEMATIC}"
 | |
|     assert_secureboot
 | |
| fi
 | |
| 
 | |
| destroy_cluster
 |