blob: 0be57727eca3c13acb308af51f2a6d1a4acc791c [file]
#!/bin/bash
#
# This is the startup script that gets executed when the EC2 instance running lnt.llvm.org
# is brought up for the first time. This script references some files under /etc/lnt that
# are put into place by cloud-init, which is specified in the Terraform configuration file.
#
# This scripts sets up another service that is run on every boot of the EC2 instance and which
# effectively runs the actual LNT service.
#
set -e
echo "Installing docker"
yum update -y
yum install -y docker
docker --version
echo "Installing docker compose"
mkdir -p /usr/local/lib/docker/cli-plugins
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m) \
-o /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
docker compose version
if ! lsblk --output FSTYPE -f /dev/sdh | grep --quiet ext4; then
echo "Formatting /dev/sdh -- this is a new EBS volume"
mkfs -t ext4 /dev/sdh
else
echo "/dev/sdh already contains a filesystem -- reusing previous EBS volume"
fi
echo "Setting up the LNT service (via Docker compose) to start on every boot"
cat <<EOF > /etc/systemd/system/lnt.service
[Unit]
Description=LNT instance via Docker Compose
Requires=docker.service
After=docker.service
[Service]
ExecStart=/bin/bash /etc/lnt/on-ec2-boot.sh
# Set the service type to simple to use journalctl for logging
Type=simple
# If we fail to start the Docker service, something's awfully wrong so avoid getting into a failure loop
Restart=no
[Install]
WantedBy=multi-user.target
EOF
systemctl enable lnt.service
systemctl start lnt.service