xref: /freebsd/release/Makefile.ec2 (revision c482d65cd187a5cc311ede3e328270bfcd014e73)
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