Page MenuHomeFreeBSD

D23804.diff
No OneTemporary

D23804.diff

diff --git a/release/Makefile.azure b/release/Makefile.azure
--- a/release/Makefile.azure
+++ b/release/Makefile.azure
@@ -11,8 +11,8 @@
CLEANFILES+= ${AZURE_UPLOAD_TGTS}
.if defined(AZURE_UPLOAD_CONF) && !empty(AZURE_UPLOAD_CONF)
-. for VAR in _STORAGE _ACCOUNT _KEY
-AZURE${VAR}!= grep -E ^AZURE${VAR} ${AZURE_UPLOAD_CONF} | awk -F' ' '{print $$2}'
+. for VAR in _STORAGE _ACCOUNT _RESOURCEGROUP _KEY _LOCATION
+AZURE${VAR}!= grep -E ^AZURE${VAR}= ${AZURE_UPLOAD_CONF} | awk '{print $$2}'
. endfor
.endif
@@ -20,34 +20,53 @@
SNAPSHOT_DATE!= date +-${BUILDDATE}
.endif
-AZURE_TARGET:= ${OSRELEASE}${SNAPSHOT_DATE}.vhd
+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 _KEY
+.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/azure)
-. if !exists(/usr/local/bin/npm)
-. if !exists(${PORTSDIR}/www/npm/Makefile)
-. if !exists(/usr/local/sbin/pkg-static)
+.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 www/npm
-. else
- env UNAME_r=${UNAME_r} make -C ${PORTSDIR}/www/npm BATCH=1 all install clean
. 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
- npm install -g azure-cli
.endif
azure-do-upload:
- /usr/local/bin/azure storage blob upload \
- ${AZURE_IMG} ${AZURE_STORAGE} ${AZURE_TARGET} \
- -t page -a ${AZURE_ACCOUNT} -k "${AZURE_KEY}"
- touch ${.OBJDIR}/${.TARGET}
-
+ /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
diff --git a/release/Makefile.vm b/release/Makefile.vm
--- a/release/Makefile.vm
+++ b/release/Makefile.vm
@@ -174,8 +174,8 @@
${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${CLOUDTARGETS}
.endif
-.include "${.CURDIR}/Makefile.ec2"
.include "${.CURDIR}/Makefile.azure"
+.include "${.CURDIR}/Makefile.ec2"
.include "${.CURDIR}/Makefile.gce"
.include "${.CURDIR}/Makefile.vagrant"
.include "${.CURDIR}/Makefile.inc1"
diff --git a/release/tools/azure.conf b/release/tools/azure.conf
--- a/release/tools/azure.conf
+++ b/release/tools/azure.conf
@@ -3,25 +3,54 @@
# $FreeBSD$
#
+# Convention of Linux type VM on Azure is 30G
+export VMSIZE=30g
+
# Set to a list of packages to install.
-# Example:
-#export VM_EXTRA_PACKAGES="www/apache24"
-export VM_EXTRA_PACKAGES="${VM_EXTRA_PACKAGES} sysutils/azure-agent"
+export VM_EXTRA_PACKAGES="azure-agent python python3 firstboot-freebsd-update firstboot-pkgs"
# Set to a list of third-party software to enable in rc.conf(5).
-# Example:
-#export VM_RC_LIST="apache24"
-export VM_RC_LIST=
+export VM_RC_LIST="ntpd sshd waagent firstboot_freebsd_update firstboot_pkgs"
+
+# No swap space; waagent will allocate swap space on the resource disk.
+# See ResourceDisk.EnableSwap and ResourceDisk.SwapSizeMB in waagent.conf
+export NOSWAP=YES
+
+# https://docs.microsoft.com/en-us/azure/marketplace/azure-vm-create-certification-faq#vm-images-must-have-1mb-free-space
+export VM_BOOTPARTSOFFSET=1M
vm_extra_pre_umount() {
- chroot ${DESTDIR} ln -s /usr/local/sbin/waagent /usr/sbin/waagent
- chroot ${DESTDIR} /usr/local/sbin/waagent -verbose -install
- yes | chroot ${DESTDIR} /usr/local/sbin/waagent -deprovision
- echo 'sshd_enable="YES"' >> ${DESTDIR}/etc/rc.conf
- echo 'ifconfig_hn0="SYNCDHCP"' >> ${DESTDIR}/etc/rc.conf
- echo 'waagent_enable="YES"' >> ${DESTDIR}/etc/rc.conf
- echo 'console="comconsole vidconsole"' >> ${DESTDIR}/boot/loader.conf
- echo 'comconsole_speed="115200"' >> ${DESTDIR}/boot/loader.conf
+ # The firstboot_pkgs rc.d script will download the repository
+ # catalogue and install or update pkg when the instance first
+ # launches, so these files would just be replaced anyway; removing
+ # them from the image allows it to boot faster.
+ mount -t devfs devfs ${DESTDIR}/dev
+ chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \
+ /usr/sbin/pkg delete -f -y pkg
+ umount ${DESTDIR}/dev
+ rm ${DESTDIR}/var/db/pkg/repo-*.sqlite
+
+ yes | chroot ${DESTDIR} ${EMULATOR} /usr/local/sbin/waagent -deprovision
+
+ cat << EOF >> ${DESTDIR}/etc/rc.conf
+ifconfig_hn0="SYNCDHCP"
+ntpd_sync_on_start="YES"
+EOF
+
+ cat << EOF >> ${DESTDIR}/boot/loader.conf
+autoboot_delay="-1"
+beastie_disable="YES"
+loader_logo="none"
+hw.memtest.tests="0"
+console="comconsole efi vidconsole"
+comconsole_speed="115200"
+boot_multicons="YES"
+boot_serial="YES"
+mlx4en_load="YES"
+mlx5en_load="YES"
+EOF
+
+ touch ${DESTDIR}/firstboot
rm -f ${DESTDIR}/etc/resolv.conf
diff --git a/release/tools/vmimage.subr b/release/tools/vmimage.subr
--- a/release/tools/vmimage.subr
+++ b/release/tools/vmimage.subr
@@ -195,6 +195,11 @@
SWAPOPT="-p freebsd-swap/swapfs::${SWAPSIZE}"
fi
+ if [ -n "${VM_BOOTPARTSOFFSET}" ]; then
+ BOOTPARTSOFFSET=":${VM_BOOTPARTSOFFSET}"
+ fi
+
+
BOOTFILES="$(env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
WITH_UNIFIED_OBJDIR=yes \
make -C ${WORLDDIR}/stand -V .OBJDIR)"
@@ -204,7 +209,7 @@
amd64:amd64 | i386:i386)
ESP=yes
BOOTPARTS="-b ${BOOTFILES}/i386/pmbr/pmbr \
- -p freebsd-boot/bootfs:=${BOOTFILES}/i386/gptboot/gptboot"
+ -p freebsd-boot/bootfs:=${BOOTFILES}/i386/gptboot/gptboot${BOOTPARTSOFFSET}"
ROOTFSPART="-p freebsd-ufs/rootfs:=${VMBASE}"
MAKEFSARGS="-B little"
;;

File Metadata

Mime Type
text/plain
Expires
Thu, Dec 26, 10:24 AM (12 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15603796
Default Alt Text
D23804.diff (6 KB)

Event Timeline