173d4ced0SColin Percival# 273d4ced0SColin Percival# 373d4ced0SColin Percival# 473d4ced0SColin Percival# Makefile for creating an EC2 AMI from a disk image. 573d4ced0SColin Percival# 673d4ced0SColin Percival 73c3445e8SGlen Barber.if ${BRANCH} == "CURRENT" || ${BRANCH} == "STABLE" || ${BRANCH} == "PRERELEASE" 886e5b137SGlen BarberAMINAMESUFFIX!= date +-${BUILDDATE} 973d4ced0SColin Percival.endif 1043fbd222SColin Percival.if defined(EC2PUBLIC) && !empty(EC2PUBLIC) 1173d4ced0SColin PercivalPUBLISH= --public 1273d4ced0SColin Percival.endif 13a7ec419dSColin Percival.if defined(EC2PUBLICSNAP) && !empty(EC2PUBLICSNAP) 144222a490SColin PercivalPUBLICSNAP= --publicsnap 15a7ec419dSColin Percival.endif 1643fbd222SColin Percival.if defined(EC2SNSTOPIC) && !empty(EC2SNSTOPIC) 17a6fe18b0SColin PercivalEC2SNSREL= ${REVISION}-${BRANCH} 1829b282f3SGlen BarberEC2SNSVERS= ${GITBRANCH}@${GITREV} 19a6fe18b0SColin Percival.endif 2001b73296SColin Percival.if ${TARGET_ARCH} != "amd64" 2101b73296SColin PercivalEC2ARCH= --${TARGET_ARCH:S/aarch64/arm64/} 2201b73296SColin Percival.endif 230aa2a94eSColin Percival.if !defined(AMIBOOTMETHOD) 24bcf91471SColin PercivalAMIBOOTMETHOD= UEFI-PREFERRED 250aa2a94eSColin Percival.endif 260aa2a94eSColin Percival.if ${AMIBOOTMETHOD} == "UEFI" && ${TARGET_ARCH} == "amd64" 270aa2a94eSColin PercivalBOOTMODEOPT= --uefi 280aa2a94eSColin Percival.endif 29bcf91471SColin Percival.if ${AMIBOOTMETHOD} == "UEFI-PREFERRED" && ${TARGET_ARCH} == "amd64" 30bcf91471SColin PercivalBOOTMODEOPT= --uefi-preferred 31bcf91471SColin Percival.endif 32*c482d65cSColin Percival.if ${AMIBOOTMETHOD} == "UEFI-PREFERRED" 33*c482d65cSColin PercivalAMIBASENAME=${TYPE} ${REVISION}-${BRANCH}-${TARGET}${AMINAMESUFFIX} 34*c482d65cSColin Percival.else 35*c482d65cSColin PercivalAMIBASENAME=${TYPE} ${REVISION}-${BRANCH}-${TARGET}${AMINAMESUFFIX} ${AMIBOOTMETHOD} 36*c482d65cSColin Percival.endif 3773d4ced0SColin Percival 3898becbfcSGlen BarberCLEANFILES+= ec2ami 3998becbfcSGlen Barber 4098becbfcSGlen Barber.if !exists(/usr/local/bin/bsdec2-image-upload) 4198becbfcSGlen BarberCW_EC2_PORTINSTALL= cw-ec2-portinstall 4298becbfcSGlen BarberCLEANFILES+= ${CW_EC2_PORTINSTALL} 4398becbfcSGlen Barber.else 4498becbfcSGlen BarberCW_EC2_PORTINSTALL= 4598becbfcSGlen Barber.endif 4698becbfcSGlen Barber 47f23e36d7SGlen Barbercw-ec2-portinstall: 486c87aed3SColin Percival.if !exists(/usr/local/bin/bsdec2-image-upload) 496c87aed3SColin Percival. if !exists(${PORTSDIR}/net/bsdec2-image-upload/Makefile) 50f23e36d7SGlen Barber. if !exists(/usr/local/sbin/pkg-static) 516c87aed3SColin Percival env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf 5273d4ced0SColin Percival. endif 53f23e36d7SGlen Barber env ASSUME_ALWAYS_YES=yes pkg install -y net/bsdec2-image-upload 546c87aed3SColin Percival. else 556c87aed3SColin Percival env UNAME_r=${UNAME_r} make -C ${PORTSDIR}/net/bsdec2-image-upload \ 566c87aed3SColin Percival BATCH=1 WRKDIRPREFIX=/tmp/ports DISTDIR=/tmp/distfiles \ 576c87aed3SColin Percival all install clean 586c87aed3SColin Percival. endif 59f23e36d7SGlen Barber.endif 6098becbfcSGlen Barber @touch ${.TARGET} 61f23e36d7SGlen Barber 62219caac6SColin Percival.for _FS in ${EC2_FSLIST} 637494fb6bSColin Percival.for _FL in ${EC2_FLAVOURS:tl} 64219caac6SColin Percival.if defined(SSMPREFIX) && !empty(SSMPREFIX) 657494fb6bSColin PercivalSSMOPTS_${_FL}_${_FS}= --ssm-name ${SSMPREFIX}/${TARGET_ARCH:S/aarch64/arm64/}/${_FL}/${_FS}/${REVISION}/${BRANCH} 66219caac6SColin Percival.endif 677494fb6bSColin PercivalEC2AMILIST+= ec2ami-${_FL}-${_FS} 68e06022e1SColin PercivalCLEANFILES+= ec2ami-${_FL}-${_FS} 697494fb6bSColin Percivalec2ami-${_FL}-${_FS}: cw-ec2-${_FL}-${_FS} ${CW_EC2_PORTINSTALL} 7073d4ced0SColin Percival.if !defined(AWSKEYFILE) || !exists(${AWSKEYFILE}) 7173d4ced0SColin Percival @echo "--------------------------------------------------------------" 7273d4ced0SColin Percival @echo ">>> AWSKEYFILE must point at AWS keys for EC2 AMI creation" 7373d4ced0SColin Percival @echo "--------------------------------------------------------------" 7473d4ced0SColin Percival @false 7573d4ced0SColin Percival.endif 7673d4ced0SColin Percival.if !defined(AWSREGION) 7773d4ced0SColin Percival @echo "--------------------------------------------------------------" 7873d4ced0SColin Percival @echo ">>> AWSREGION must be specified EC2 AMI creation" 7973d4ced0SColin Percival @echo "--------------------------------------------------------------" 8073d4ced0SColin Percival @false 8173d4ced0SColin Percival.endif 8273d4ced0SColin Percival.if !defined(AWSBUCKET) 8373d4ced0SColin Percival @echo "--------------------------------------------------------------" 8473d4ced0SColin Percival @echo ">>> AWSBUCKET must be specified for EC2 AMI creation" 8573d4ced0SColin Percival @echo "--------------------------------------------------------------" 8673d4ced0SColin Percival @false 8773d4ced0SColin Percival.endif 8801b73296SColin Percival /usr/local/bin/bsdec2-image-upload ${PUBLISH} ${PUBLICSNAP} \ 897494fb6bSColin Percival ${EC2ARCH} ${SSMOPTS_${_FL}_${_FS}} ${BOOTMODEOPT} --sriov --ena \ 907494fb6bSColin Percival ${.OBJDIR}/${EC2-${_FL:tu}${_FS:tu}IMAGE} \ 91*c482d65cSColin Percival "${AMIBASENAME} ${_FL} ${_FS:tu}" \ 9229b282f3SGlen Barber "${TYPE}/${TARGET} ${GITBRANCH}@${GITREV}" \ 93a6fe18b0SColin Percival ${AWSREGION} ${AWSBUCKET} ${AWSKEYFILE} \ 94a6fe18b0SColin Percival ${EC2SNSTOPIC} ${EC2SNSREL} ${EC2SNSVERS} 9598becbfcSGlen Barber @touch ${.TARGET} 96219caac6SColin Percival.endfor 977494fb6bSColin Percival.endfor 984c9c9b4bSColin Percival 997494fb6bSColin Percivalec2ami: ec2ami-base-${VMFS} 100219caac6SColin Percivalec2amis: ${EC2AMILIST} 101