xref: /freebsd/release/Makefile.ec2 (revision 6c87aed3)
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
3273d4ced0SColin Percival
3398becbfcSGlen BarberCLEANFILES+=		ec2ami
3498becbfcSGlen Barber
3598becbfcSGlen Barber.if !exists(/usr/local/bin/bsdec2-image-upload)
3698becbfcSGlen BarberCW_EC2_PORTINSTALL=	cw-ec2-portinstall
3798becbfcSGlen BarberCLEANFILES+=		${CW_EC2_PORTINSTALL}
3898becbfcSGlen Barber.else
3998becbfcSGlen BarberCW_EC2_PORTINSTALL=
4098becbfcSGlen Barber.endif
4198becbfcSGlen Barber
42f23e36d7SGlen Barbercw-ec2-portinstall:
43*6c87aed3SColin Percival.if !exists(/usr/local/bin/bsdec2-image-upload)
44*6c87aed3SColin Percival. if !exists(${PORTSDIR}/net/bsdec2-image-upload/Makefile)
45f23e36d7SGlen Barber.  if !exists(/usr/local/sbin/pkg-static)
46*6c87aed3SColin Percival	env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf
4773d4ced0SColin Percival.  endif
48f23e36d7SGlen Barber	env ASSUME_ALWAYS_YES=yes pkg install -y net/bsdec2-image-upload
49*6c87aed3SColin Percival. else
50*6c87aed3SColin Percival	env UNAME_r=${UNAME_r} make -C ${PORTSDIR}/net/bsdec2-image-upload \
51*6c87aed3SColin Percival	    BATCH=1 WRKDIRPREFIX=/tmp/ports DISTDIR=/tmp/distfiles \
52*6c87aed3SColin Percival	    all install clean
53*6c87aed3SColin Percival. endif
54f23e36d7SGlen Barber.endif
5598becbfcSGlen Barber	@touch ${.TARGET}
56f23e36d7SGlen Barber
57219caac6SColin Percival.for _FS in ${EC2_FSLIST}
587494fb6bSColin Percival.for _FL in ${EC2_FLAVOURS:tl}
59219caac6SColin Percival.if defined(SSMPREFIX) && !empty(SSMPREFIX)
607494fb6bSColin PercivalSSMOPTS_${_FL}_${_FS}=	--ssm-name ${SSMPREFIX}/${TARGET_ARCH:S/aarch64/arm64/}/${_FL}/${_FS}/${REVISION}/${BRANCH}
61219caac6SColin Percival.endif
627494fb6bSColin PercivalEC2AMILIST+=	ec2ami-${_FL}-${_FS}
637494fb6bSColin Percivalec2ami-${_FL}-${_FS}: cw-ec2-${_FL}-${_FS} ${CW_EC2_PORTINSTALL}
6473d4ced0SColin Percival.if !defined(AWSKEYFILE) || !exists(${AWSKEYFILE})
6573d4ced0SColin Percival	@echo "--------------------------------------------------------------"
6673d4ced0SColin Percival	@echo ">>> AWSKEYFILE must point at AWS keys for EC2 AMI creation"
6773d4ced0SColin Percival	@echo "--------------------------------------------------------------"
6873d4ced0SColin Percival	@false
6973d4ced0SColin Percival.endif
7073d4ced0SColin Percival.if !defined(AWSREGION)
7173d4ced0SColin Percival	@echo "--------------------------------------------------------------"
7273d4ced0SColin Percival	@echo ">>> AWSREGION must be specified EC2 AMI creation"
7373d4ced0SColin Percival	@echo "--------------------------------------------------------------"
7473d4ced0SColin Percival	@false
7573d4ced0SColin Percival.endif
7673d4ced0SColin Percival.if !defined(AWSBUCKET)
7773d4ced0SColin Percival	@echo "--------------------------------------------------------------"
7873d4ced0SColin Percival	@echo ">>> AWSBUCKET must be specified for EC2 AMI creation"
7973d4ced0SColin Percival	@echo "--------------------------------------------------------------"
8073d4ced0SColin Percival	@false
8173d4ced0SColin Percival.endif
8201b73296SColin Percival	/usr/local/bin/bsdec2-image-upload ${PUBLISH} ${PUBLICSNAP} \
837494fb6bSColin Percival	    ${EC2ARCH} ${SSMOPTS_${_FL}_${_FS}} ${BOOTMODEOPT} --sriov --ena \
847494fb6bSColin Percival	    ${.OBJDIR}/${EC2-${_FL:tu}${_FS:tu}IMAGE} \
857494fb6bSColin Percival	    "${TYPE} ${REVISION}-${BRANCH}-${TARGET}${AMINAMESUFFIX} ${AMIBOOTMETHOD} ${_FL} ${_FS:tu}" \
8629b282f3SGlen Barber	    "${TYPE}/${TARGET} ${GITBRANCH}@${GITREV}" \
87a6fe18b0SColin Percival	    ${AWSREGION} ${AWSBUCKET} ${AWSKEYFILE} \
88a6fe18b0SColin Percival	    ${EC2SNSTOPIC} ${EC2SNSREL} ${EC2SNSVERS}
8998becbfcSGlen Barber	@touch ${.TARGET}
90219caac6SColin Percival.endfor
917494fb6bSColin Percival.endfor
924c9c9b4bSColin Percival
937494fb6bSColin Percivalec2ami: ec2ami-base-${VMFS}
94219caac6SColin Percivalec2amis: ${EC2AMILIST}
95