Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F106101420
D23804.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D23804.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D23804: Update Azure release bits
Attached
Detach File
Event Timeline
Log In to Comment