blob: 786c9641c155c2dece5b351d2111dccd9f19d6f1 [file]
#!/bin/bash
#
# This is the startup script that gets executed every time the EC2 instance running lnt.llvm.org
# boots. This script references some files under /etc/lnt that are put into place when the instance
# is initially set up (via cloud-init, see the Terraform configuration file).
#
# This arrangement ensures that the LNT service automatically restarts after a reboot of the EC2
# instance, which is useful since some operations don't require entirely tearing down the instance,
# in which case the instance only gets rebooted and should still be functional.
#
set -e
echo "Mounting EBS volume with persistent information at /mnt/lnt-persistent-state"
if ! findmnt --source /dev/sdh; then
mkdir -p /mnt/lnt-persistent-state
mount /dev/sdh /mnt/lnt-persistent-state
fi
echo "Creating necessary filesystem hierarchy on the persistent volume"
mkdir -p /mnt/lnt-persistent-state/var/lib/lnt
mkdir -p /mnt/lnt-persistent-state/var/lib/postgresql
echo "Linking locations inside the persistent volume to the expected locations on the instance"
if [[ ! -e "/var/lib/lnt" ]]; then
(cd /var/lib && ln -s /mnt/lnt-persistent-state/var/lib/lnt lnt)
fi
if [[ ! -e "/var/lib/postgresql" ]]; then
(cd /var/lib && ln -s /mnt/lnt-persistent-state/var/lib/postgresql postgresql)
fi
echo "Starting LNT service with Docker compose"
docker compose --file /etc/lnt/compose.yaml \
--file /etc/lnt/ec2-volume-mapping.yaml \
--env-file /etc/lnt/compose.env \
up