101 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
[[ -n ${DEBUG:-} ]] && set -o xtrace
 | 
						|
 | 
						|
tracestate="$(shopt -po xtrace)"
 | 
						|
set +o xtrace
 | 
						|
az login --service-principal -u ${AZURE_CLIENT_ID} -p ${AZURE_CLIENT_SECRET} --tenant ${AZURE_TENANT_ID} >/dev/null 2>&1
 | 
						|
az account set -s ${AZURE_SUBSCRIPTION_ID} >/dev/null 2>&1
 | 
						|
eval "$tracestate"
 | 
						|
 | 
						|
export RESOURCE_GROUP_NAME="${RESOURCE_GROUP_NAME:-cluster-api-images}"
 | 
						|
export AZURE_LOCATION="${AZURE_LOCATION:-southcentralus}"
 | 
						|
if ! az group show -n ${RESOURCE_GROUP_NAME} -o none 2>/dev/null; then
 | 
						|
  az group create -n ${RESOURCE_GROUP_NAME} -l ${AZURE_LOCATION} --tags ${TAGS:-}
 | 
						|
fi
 | 
						|
CREATE_TIME="$(date +%s)"
 | 
						|
RANDOM_SUFFIX="$(head /dev/urandom | LC_ALL=C tr -dc a-z | head -c 4 ; echo '')"
 | 
						|
export GALLERY_NAME="${GALLERY_NAME:-ClusterAPI${CREATE_TIME}${RANDOM_SUFFIX}}"
 | 
						|
 | 
						|
# Hack to set only build_resource_group_name or location, a better solution is welcome
 | 
						|
# https://developer.hashicorp.com/packer/plugins/builders/azure/arm#build_resource_group_name
 | 
						|
PACKER_FILE_PATH=packer/azure/
 | 
						|
TMP_PACKER_FILE=$PACKER_FILE_PATH"packer.json.tmp"
 | 
						|
PACKER_FILE=$PACKER_FILE_PATH"packer.json"
 | 
						|
if [ ${BUILD_RESOURCE_GROUP_NAME} ]; then
 | 
						|
    if ! az group show -n ${BUILD_RESOURCE_GROUP_NAME} -o none 2>/dev/null; then
 | 
						|
        az group create -n ${BUILD_RESOURCE_GROUP_NAME} -l ${AZURE_LOCATION} --tags ${TAGS:-}
 | 
						|
    fi
 | 
						|
    jq '(.builders | map(if .name | contains("sig") then del(.location) + {"build_resource_group_name": "{{user `build_resource_group_name`}}"} else . end)) as $updated | .builders = $updated' $PACKER_FILE  > $TMP_PACKER_FILE
 | 
						|
    mv $TMP_PACKER_FILE $PACKER_FILE
 | 
						|
fi
 | 
						|
 | 
						|
packer validate -syntax-only $PACKER_FILE || exit 1
 | 
						|
 | 
						|
az sig create --resource-group ${RESOURCE_GROUP_NAME} --gallery-name ${GALLERY_NAME}
 | 
						|
 | 
						|
create_image_definition() {
 | 
						|
  az sig image-definition create \
 | 
						|
    --resource-group ${RESOURCE_GROUP_NAME} \
 | 
						|
    --gallery-name ${GALLERY_NAME} \
 | 
						|
    --gallery-image-definition capi-${1} \
 | 
						|
    --publisher capz \
 | 
						|
    --offer capz-demo \
 | 
						|
    --sku ${2} \
 | 
						|
    --hyper-v-generation ${3} \
 | 
						|
    --os-type ${4}
 | 
						|
}
 | 
						|
 | 
						|
SIG_TARGET=$1
 | 
						|
 | 
						|
case ${SIG_TARGET} in
 | 
						|
  ubuntu-1804)
 | 
						|
    create_image_definition ${SIG_TARGET} "18.04-LTS" "V1" "Linux"
 | 
						|
  ;;
 | 
						|
  ubuntu-2004)
 | 
						|
    create_image_definition ${SIG_TARGET} "20_04-lts" "V1" "Linux"
 | 
						|
  ;;
 | 
						|
  ubuntu-2204)
 | 
						|
    create_image_definition ${SIG_TARGET} "22_04-lts" "V1" "Linux"
 | 
						|
  ;;
 | 
						|
  centos-7)
 | 
						|
    create_image_definition "centos-7" "centos-7" "V1" "Linux"
 | 
						|
  ;;
 | 
						|
  rhel-8)
 | 
						|
    create_image_definition "rhel-8" "rhel-8" "V1" "Linux"
 | 
						|
  ;;
 | 
						|
  windows-2019)
 | 
						|
    create_image_definition "windows-2019-docker-ee" "win-2019-docker-ee" "V1" "Windows"
 | 
						|
  ;;
 | 
						|
  windows-2019-containerd)
 | 
						|
    create_image_definition ${SIG_TARGET} "win-2019-containerd" "V1" "Windows"
 | 
						|
  ;;
 | 
						|
  windows-2022-containerd)
 | 
						|
    create_image_definition ${SIG_TARGET} "win-2022-containerd" "V1" "Windows"
 | 
						|
  ;;
 | 
						|
  flatcar)
 | 
						|
    SKU="flatcar-${FLATCAR_CHANNEL}-${FLATCAR_VERSION}"
 | 
						|
    create_image_definition ${SKU} ${SKU} "V1" "Linux"
 | 
						|
  ;;
 | 
						|
  ubuntu-1804-gen2)
 | 
						|
    create_image_definition ${SIG_TARGET} "18.04-lts-gen2" "V2" "Linux"
 | 
						|
  ;;
 | 
						|
  ubuntu-2004-gen2)
 | 
						|
    create_image_definition ${SIG_TARGET} "20_04-lts-gen2" "V2" "Linux"
 | 
						|
  ;;
 | 
						|
  ubuntu-2204-gen2)
 | 
						|
    create_image_definition ${SIG_TARGET} "22_04-lts-gen2" "V2" "Linux"
 | 
						|
  ;;
 | 
						|
  centos-7-gen2)
 | 
						|
    create_image_definition "centos-7-gen2" "centos-7-gen2" "V2" "Linux"
 | 
						|
  ;;
 | 
						|
  flatcar-gen2)
 | 
						|
    SKU="flatcar-${FLATCAR_CHANNEL}-${FLATCAR_VERSION}-gen2"
 | 
						|
    create_image_definition "${SKU}" "${SKU}" "V2" "Linux"
 | 
						|
  ;;
 | 
						|
  *)
 | 
						|
    >&2 echo "Unsupported SIG target: '${SIG_TARGET}'"
 | 
						|
    exit 1
 | 
						|
  ;;
 | 
						|
esac
 |