396bb8ab86
* Build Profiles (completion of PR #49) + auto-updates version profile when new release detected + updates releases/<profile>.yaml after successful builds * Prune AMIs (in AWS and in releases/<profile>.yaml + 'revision' - keep latest revision per release + 'release' - keep latest release per version + 'version' - remove end-of-life versions * releases/README.md updater script * README overhaul + Pre-built AMIs --> releases/README.md + profiles/README.md for profile configuration details + main README.md overhauled to go over how to build and manage custom AMIs
45 lines
1.2 KiB
Bash
Executable File
45 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
[ -x /usr/sbin/nvme ] || exit
|
|
|
|
PROC="$(basename "$0")[$$]"
|
|
|
|
log() {
|
|
FACILITY="kern.$1"
|
|
shift
|
|
logger -s -p "$FACILITY" -t "$PROC" "$@"
|
|
}
|
|
|
|
raw_ebs_alias() {
|
|
/usr/sbin/nvme id-ctrl "/dev/$BASE" -b 2>/dev/null | dd bs=32 skip=96 count=1 2>/dev/null
|
|
}
|
|
|
|
case $ACTION in
|
|
add|"")
|
|
BASE=$(echo "$MDEV" | sed -re 's/^(nvme[0-9]+n[0-9]+).*/\1/')
|
|
PART=$(echo "$MDEV" | sed -re 's/nvme[0-9]+n[0-9]+p?//g')
|
|
MAXTRY=50
|
|
TRY=0
|
|
until [ -n "$EBS" ]; do
|
|
EBS=$(raw_ebs_alias | sed -nre '/^(\/dev\/)?(s|xv)d[a-z]{1,2} /p' | tr -d ' ')
|
|
[ -n "$EBS" ] && break
|
|
TRY=$((TRY + 1))
|
|
if [ $TRY -eq $MAXTRY ]; then
|
|
log err "Failed to get EBS volume alias for $MDEV after $MAXTRY attempts ($(raw_ebs_alias))"
|
|
exit 1
|
|
fi
|
|
sleep 0.1
|
|
done
|
|
# remove any leading '/dev/', 'sd', or 'xvd', and append partition
|
|
EBS="${${${EBS#/dev/}#sd}#xvd}$PART"
|
|
ln -sf "$MDEV" "sd$EBS" && log notice "Added sd$EBS symlink for $MDEV"
|
|
ln -sf "$MDEV" "xvd$EBS" && log notice "Added xvd$EBS symlink for $MDEV"
|
|
;;
|
|
remove)
|
|
for TARGET in sd* xvd*
|
|
do
|
|
[ "$(readlink "$TARGET" 2>/dev/null)" = "$MDEV" ] && rm -f "$TARGET" && log notice "Removed $TARGET symlink for $MDEV"
|
|
done
|
|
;;
|
|
esac
|