Page MenuHomeFreeBSD

D23804.id75209.diff
No OneTemporary

D23804.id75209.diff

Index: release/Makefile.azure
===================================================================
--- release/Makefile.azure
+++ release/Makefile.azure
@@ -11,7 +11,7 @@
CLEANFILES+= ${AZURE_UPLOAD_TGTS}
.if defined(AZURE_UPLOAD_CONF) && !empty(AZURE_UPLOAD_CONF)
-. for VAR in _STORAGE _ACCOUNT _KEY
+. for VAR in _STORAGE _ACCOUNT _RESOURCEGROUP _KEY
AZURE${VAR}!= grep -E ^AZURE${VAR} ${AZURE_UPLOAD_CONF} | awk -F' ' '{print $$2}'
. endfor
.endif
@@ -20,34 +20,54 @@
SNAPSHOT_DATE!= date +-%Y-%m-%d
.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
- make -C ${PORTSDIR}/www/npm BATCH=1 all install clean
. endif
+ env ASSUME_ALWAYS_YES=yes pkg install -y py37-azure-cli
+. else
+ 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}"
+ /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
touch ${.OBJDIR}/${.TARGET}
-
Index: release/Makefile.vm
===================================================================
--- release/Makefile.vm
+++ release/Makefile.vm
@@ -16,7 +16,8 @@
QCOW2_DESC= Qemu, KVM disk image
RAW_DESC= Unformatted raw disk image
-CLOUDWARE?= EC2 \
+CLOUDWARE?= AZURE \
+ EC2 \
GCE \
VAGRANT-VIRTUALBOX \
VAGRANT-VMWARE
@@ -170,7 +171,7 @@
${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"
Index: release/tools/azure.conf
===================================================================
--- release/tools/azure.conf
+++ release/tools/azure.conf
@@ -3,25 +3,49 @@
# $FreeBSD$
#
+# Convention of Linux type VM on Azure is 32G
+export VMSIZE=32G
+
# Set to a list of packages to install.
-# Example:
-#export VM_EXTRA_PACKAGES="www/apache24"
-export 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"
+# No swap space; waagent will allocate swap space on the resource disk.
+# See ResourceDisk.EnableSwap and ResourceDisk.SwapSizeMB in waagent.conf
+export NOSWAP=YES
+
vm_extra_pre_umount() {
- chroot ${DESTDIR} ln -s /usr/local/sbin/waagent /usr/sbin/waagent
- chroot ${DESTDIR} /usr/local/sbin/waagent -verbose -install
+ # 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} /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
+
+ 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 vidconsole"
+comconsole_speed="115200"
+mlx4en_load="YES"
+mlx5en_load="YES"
+EOF
+
+ touch ${DESTDIR}/firstboot
rm -f ${DESTDIR}/etc/resolv.conf

File Metadata

Mime Type
text/plain
Expires
Thu, Dec 26, 10:46 PM (11 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15608574
Default Alt Text
D23804.id75209.diff (5 KB)

Event Timeline