release: add basic cloudinit images

Provide both zfs and ufs images which a 1MB partition reserved for the
config drive wearing a GPT Label "config-drive" to allow consumer to
know where they should push the config drive on the provided image.

This has been tested on OVHCloud baremetal via "bring your own image"
Also tested on openstack

Reviewed by:		emaste
Sponsored by:		OVHCloud
Differential Revision:		https://reviews.freebsd.org/D44369

(cherry picked from commit 78b6117dac99c80fe618979fef4ef322b97415fa)
(cherry picked from commit a977444652a59332c53b652b912c38a1d1802b58)
This commit is contained in:
Baptiste Daroussin 2024-03-15 09:43:20 +01:00
parent 8c093b6495
commit 227e7a205e
3 changed files with 45 additions and 0 deletions

View file

@ -19,6 +19,7 @@ RAW_DESC= Unformatted raw disk image
CLOUDWARE_TYPES?= AZURE \
BASIC-CI \
BASIC-CLOUDINIT \
EC2 \
GCE \
OCI \
@ -29,6 +30,9 @@ AZURE_DESC= Microsoft Azure platform image
BASIC-CI_FORMAT= raw
BASIC-CI_FSLIST= ufs
BASIC-CI_DESC= Image for CI
BASIC-CLOUDINIT_FORMAT= raw
BASIC-CLOUDINIT_FSLIST?= ufs zfs
BASIC-CLOUDINIT_DESC?= Images for VM with cloudinit disk config support
EC2_FORMAT= raw
EC2_FSLIST= ufs zfs
EC2_FLAVOURS= BASE CLOUD-INIT

View file

@ -0,0 +1,36 @@
#!/bin/sh
#
#
# Should be enough for base image, image can be resized in needed
export VMSIZE=5g
# 1M config drive should be enough in most cases
export CONFIG_DRIVE=YES
export CONFIG_DRIVE_SIZE=1M
# Set to a list of third-party software to enable in rc.conf(5).
export VM_RC_LIST="sshd growfs nuageinit"
vm_extra_pre_umount() {
cat << EOF >> ${DESTDIR}/etc/rc.conf
dumpdev="AUTO"
ifconfig_DEFAULT="DHCP"
sshd_enable="YES"
EOF
cat << EOF >> ${DESTDIR}/boot/loader.conf
autoboot_delay="-1"
beastie_disable="YES"
loader_logo="none"
console="comconsole,vidconsole"
EOF
cat <<EOF >> ${DESTDIR}/etc/ssh/sshd_config
PasswordAuthentication yes
UsePAM no
EOF
touch ${DESTDIR}/firstboot
return 0
}

View file

@ -242,6 +242,10 @@ vm_create_disk() {
BOOTPARTSOFFSET=":${VM_BOOTPARTSOFFSET}"
fi
if [ -n "${CONFIG_DRIVE}" ]; then
CONFIG_DRIVE="-p freebsd/config-drive::${CONFIG_DRIVE_SIZE}"
fi
case "${VMFS}" in
ufs)
FSPARTTYPE=freebsd-ufs
@ -315,6 +319,7 @@ vm_create_disk() {
mkimg -s ${PARTSCHEME} -f ${VMFORMAT} \
${BOOTPARTS} \
${SWAPOPT} \
${CONFIG_DRIVE} \
${ROOTFSPART} \
-o ${VMIMAGE}