If SSMPREFIX is specified, AMI Ids will be recorded in the SSM Parameter Store under the name ${SSMPREFIX}/${ARCH}/${FLAVOUR}/${ROOTFS}/${REVISION}/${BRANCH} where ARCH is "amd64" or "arm64", FLAVOUR is "base" (but may have other options in the future), ROOTFS is "ufs" (but may have other options in the future), and REVISION and BRANCH have their normal meanings. FreeBSD will be using the public prefix "/aws/service/freebsd", resulting in SSM Parameter names which look like /aws/service/freebsd/amd64/base/ufs/14.0/CURRENT Relnotes: yes Sponsored by: https://patreon.com/cperciva MFC after: 2 weeks
75 lines
2.4 KiB
Makefile
75 lines
2.4 KiB
Makefile
#
|
|
# $FreeBSD$
|
|
#
|
|
#
|
|
# Makefile for creating an EC2 AMI from a disk image.
|
|
#
|
|
|
|
.if ${BRANCH} == "CURRENT" || ${BRANCH} == "STABLE" || ${BRANCH} == "PRERELEASE"
|
|
AMINAMESUFFIX!= date +-${BUILDDATE}
|
|
.endif
|
|
.if defined(EC2PUBLIC) && !empty(EC2PUBLIC)
|
|
PUBLISH= --public
|
|
.endif
|
|
.if defined(EC2PUBLICSNAP) && !empty(EC2PUBLICSNAP)
|
|
PUBLICSNAP= --publicsnap
|
|
.endif
|
|
.if defined(EC2SNSTOPIC) && !empty(EC2SNSTOPIC)
|
|
EC2SNSREL= ${REVISION}-${BRANCH}
|
|
EC2SNSVERS= ${GITBRANCH}@${GITREV}
|
|
.endif
|
|
.if defined(SSMPREFIX) && !empty(SSMPREFIX)
|
|
SSMOPTS= --ssm-name ${SSMPREFIX}/${TARGET_ARCH:S/aarch64/arm64/}/base/ufs/${REVISION}/${BRANCH}
|
|
.endif
|
|
.if ${TARGET_ARCH} != "amd64"
|
|
EC2ARCH= --${TARGET_ARCH:S/aarch64/arm64/}
|
|
.endif
|
|
|
|
CLEANFILES+= ec2ami
|
|
|
|
.if !exists(/usr/local/bin/bsdec2-image-upload)
|
|
CW_EC2_PORTINSTALL= cw-ec2-portinstall
|
|
CLEANFILES+= ${CW_EC2_PORTINSTALL}
|
|
.else
|
|
CW_EC2_PORTINSTALL=
|
|
.endif
|
|
|
|
cw-ec2-portinstall:
|
|
.if exists(${PORTSDIR}/net/bsdec2-image-upload/Makefile)
|
|
env - UNAME_r=${UNAME_r} PATH=$$PATH make -C ${PORTSDIR}/net/bsdec2-image-upload BATCH=1 all install clean
|
|
.else
|
|
. if !exists(/usr/local/sbin/pkg-static)
|
|
env ASSUME_ALWAYS_YES=yes pkg bootstrap -y
|
|
. endif
|
|
env ASSUME_ALWAYS_YES=yes pkg install -y net/bsdec2-image-upload
|
|
.endif
|
|
@touch ${.TARGET}
|
|
|
|
ec2ami: cw-ec2 ${CW_EC2_PORTINSTALL}
|
|
.if !defined(AWSKEYFILE) || !exists(${AWSKEYFILE})
|
|
@echo "--------------------------------------------------------------"
|
|
@echo ">>> AWSKEYFILE must point at AWS keys for EC2 AMI creation"
|
|
@echo "--------------------------------------------------------------"
|
|
@false
|
|
.endif
|
|
.if !defined(AWSREGION)
|
|
@echo "--------------------------------------------------------------"
|
|
@echo ">>> AWSREGION must be specified EC2 AMI creation"
|
|
@echo "--------------------------------------------------------------"
|
|
@false
|
|
.endif
|
|
.if !defined(AWSBUCKET)
|
|
@echo "--------------------------------------------------------------"
|
|
@echo ">>> AWSBUCKET must be specified for EC2 AMI creation"
|
|
@echo "--------------------------------------------------------------"
|
|
@false
|
|
.endif
|
|
/usr/local/bin/bsdec2-image-upload ${PUBLISH} ${PUBLICSNAP} \
|
|
${EC2ARCH} ${SSMOPTS} --sriov --ena \
|
|
${.OBJDIR}/ec2.raw \
|
|
"${TYPE} ${REVISION}-${BRANCH}-${TARGET}${AMINAMESUFFIX}" \
|
|
"${TYPE}/${TARGET} ${GITBRANCH}@${GITREV}" \
|
|
${AWSREGION} ${AWSBUCKET} ${AWSKEYFILE} \
|
|
${EC2SNSTOPIC} ${EC2SNSREL} ${EC2SNSVERS}
|
|
@touch ${.TARGET}
|