n8n/packages/@n8n/benchmark/scripts/bootstrap.sh
Mike Repeć 91dc450ee1
fix(benchmark): Locate data disk by LUN instead of device name (no-changelog) (#33650)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:52:53 +00:00

71 lines
2.0 KiB
Bash

#!/bin/bash
#
# Script to initialize the benchmark environment on a VM
#
set -euo pipefail;
CURRENT_USER=$(whoami)
# Mount the data disk
# The data disk is attached at LUN 1 (see infra/modules/benchmark-vm/vm.tf).
# Use Azure's stable by-LUN symlink instead of /dev/sdX: kernel device order
# shifts depending on whether the VM size has a local temp disk.
DATA_DISK=/dev/disk/azure/scsi1/lun1
# First wait for the disk to become available
WAIT_TIME=0
MAX_WAIT_TIME=60
while [ ! -e "$DATA_DISK" ]; do
if [ $WAIT_TIME -ge $MAX_WAIT_TIME ]; then
echo "Error: $DATA_DISK did not become available within $MAX_WAIT_TIME seconds."
exit 1
fi
echo "Waiting for $DATA_DISK to be available... ($WAIT_TIME/$MAX_WAIT_TIME)"
sleep 1
WAIT_TIME=$((WAIT_TIME + 1))
done
# Then mount it
if [ -d "/n8n" ]; then
echo "Data disk already mounted. Clearing it..."
sudo rm -rf /n8n/*
sudo rm -rf /n8n/.[!.]*
else
sudo mkdir -p /n8n
sudo parted "$DATA_DISK" --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo partprobe "$DATA_DISK"
# Wait for udev to create the partition symlink before formatting
sudo udevadm settle
sudo mkfs.xfs "${DATA_DISK}-part1"
sudo mount "${DATA_DISK}-part1" /n8n
sudo chown -R "$CURRENT_USER":"$CURRENT_USER" /n8n
fi
### Remove unneeded dependencies
# TTY
sudo systemctl disable getty@tty1.service
sudo systemctl disable serial-getty@ttyS0.service
# Snap
sudo systemctl disable snapd.service
# Unattended upgrades
sudo systemctl disable unattended-upgrades.service
# Cron
sudo systemctl disable cron.service
# Include nodejs v20 repository
curl -fsSL https://deb.nodesource.com/setup_20.x -o nodesource_setup.sh
sudo -E bash nodesource_setup.sh
# Install docker, docker compose, nodejs
sudo DEBIAN_FRONTEND=noninteractive apt-get update -yq
sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq docker.io docker-compose nodejs
# Add the current user to the docker group
sudo usermod -aG docker "$CURRENT_USER"
# Install zx
npm install zx