fbece76095
Imports the changes for building official images on Azure Marketplace, which fulfill the requirements of Azure and FreeBSD cloud images like disk layout and UEFI for Gen2 VM, along with some minor improvements like configurations to speed up booting. "CLOUDWARE" list will be updated after some more collaborations with re completed. Reviewed by: re (gjb) Sponsored by: The FreeBSD Foundation Technical assistance from: Microsoft Differential Revision: https://reviews.freebsd.org/D23804
73 lines
2.3 KiB
Makefile
73 lines
2.3 KiB
Makefile
#
|
|
# $FreeBSD$
|
|
#
|
|
#
|
|
# Makefile for uploading Microsoft Azure disk images.
|
|
#
|
|
|
|
AZURE_IMG?= ${.OBJDIR}/azure.vhdf
|
|
AZURE_UPLOAD_TGTS= azure-check-depends \
|
|
azure-do-upload
|
|
CLEANFILES+= ${AZURE_UPLOAD_TGTS}
|
|
|
|
.if defined(AZURE_UPLOAD_CONF) && !empty(AZURE_UPLOAD_CONF)
|
|
. for VAR in _STORAGE _ACCOUNT _RESOURCEGROUP _KEY _LOCATION
|
|
AZURE${VAR}!= grep -E ^AZURE${VAR}= ${AZURE_UPLOAD_CONF} | awk '{print $$2}'
|
|
. endfor
|
|
.endif
|
|
|
|
.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
|
|
SNAPSHOT_DATE!= date +-${BUILDDATE}
|
|
.endif
|
|
|
|
AZURE_TARGET:= ${OSRELEASE}${SNAPSHOT_DATE}
|
|
|
|
START_DATE!= date -v-1d -I -u
|
|
EXPIRY_DATE!= date -v+1m -I -u
|
|
|
|
azure-upload: ${AZURE_UPLOAD_TGTS}
|
|
|
|
azure-check-depends:
|
|
.for VAR in _STORAGE _ACCOUNT _RESOURCEGROUP _KEY
|
|
. if !defined(AZURE${VAR}) || empty(AZURE${VAR})
|
|
@echo "Variable AZURE${VAR} cannot be empty."
|
|
@false
|
|
. endif
|
|
.endfor
|
|
.if !exists(/usr/local/bin/az)
|
|
. if !exists(${PORTSDIR}/sysutils/py-azure-cli/Makefile)
|
|
. if !exists(/usr/local/sbin/pkg-static)
|
|
env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf
|
|
. endif
|
|
env ASSUME_ALWAYS_YES=yes pkg install -y py38-azure-cli
|
|
. else
|
|
env UNAME_r=${UNAME_r} make -C ${PORTSDIR}/sysutils/py-azure-cli BATCH=1 all install clean
|
|
. endif
|
|
.endif
|
|
|
|
azure-do-upload:
|
|
/usr/local/bin/az storage blob upload \
|
|
--account-name ${AZURE_ACCOUNT} --account-key ${AZURE_KEY} \
|
|
--container-name ${AZURE_STORAGE} --type page \
|
|
--file ${AZURE_IMG} --name ${AZURE_TARGET}.vhd
|
|
@echo "The disk access URL with shared access signature is:"
|
|
@echo
|
|
@echo -n https://${AZURE_ACCOUNT}.blob.core.windows.net/${AZURE_STORAGE}/${AZURE_TARGET}.vhd?
|
|
@/usr/local/bin/az storage container generate-sas \
|
|
--account-name ${AZURE_ACCOUNT} --account-key ${AZURE_KEY} \
|
|
--name ${AZURE_STORAGE} \
|
|
--permissions lr \
|
|
--start ${START_DATE} \
|
|
--expiry ${EXPIRY_DATE} | cut -d '"' -f 2
|
|
@echo
|
|
@echo "Please go to Microsoft Partner Center to create a new offer and publish it:"
|
|
@echo
|
|
@echo "https://partner.microsoft.com/dashboard/commercial-marketplace/overview"
|
|
@echo
|
|
@echo "After the new offer status is live, you can delete the disk file with:"
|
|
@echo
|
|
@echo /usr/local/bin/az storage blob delete \
|
|
--account-name ${AZURE_ACCOUNT} --account-key ${AZURE_KEY} \
|
|
--container-name ${AZURE_STORAGE} --name ${AZURE_TARGET}.vhd
|
|
@echo
|