Files
CK-X/jumphost/scripts/prepare-exam-env.sh
2025-12-02 08:38:16 +05:30

76 lines
1.7 KiB
Bash

#!/bin/bash
exec >> /proc/1/fd/1 2>&1
# Log function with timestamp
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
# Set defaults
NUMBER_OF_NODES=${1:-1}
EXAM_ID=${2:-""}
echo "Exam ID: $EXAM_ID"
echo "Number of nodes: $NUMBER_OF_NODES"
#check docker is running
if ! docker info > /dev/null 2>&1; then
log "Docker is not running"
log "Attempting to start docker"
dockerd &
sleep 5
#check docker is running 3 times with 5 second interval
for i in {1..3}; do
if docker info > /dev/null 2>&1; then
log "Docker started successfully"
break
fi
log "Docker failed to start, retrying..."
sleep 5
done
fi
log "Starting exam environment preparation with $NUMBER_OF_NODES node(s)"
# Validate input
if ! [[ "$NUMBER_OF_NODES" =~ ^[0-9]+$ ]]; then
log "ERROR: Number of nodes must be a positive integer"
exit 1
fi
# Setup kind cluster
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null candidate@k8s-api-server "env-setup $NUMBER_OF_NODES $CLUSTER_NAME"
#Pull assets from URL
curl facilitator:3000/api/v1/exams/$EXAM_ID/assets -o assets.tar.gz
mkdir -p /tmp/exam-assets
#Unzip assets
tar -xzvf assets.tar.gz -C /tmp/exam-assets
#Remove assets.tar.gz
rm assets.tar.gz
#make every file in /tmp/exam-assets executable
find /tmp/exam-assets -type f -exec chmod +x {} \;
echo "Exam assets downloaded and prepared successfully"
export KUBECONFIG=/home/candidate/.kube/kubeconfig
sleep 5
#wait till api-server is ready
while ! kubectl get nodes > /dev/null 2>&1; do
log "API server is not ready, retrying..."
sleep 5
done
echo "API server is ready"
#Run setup scripts
for script in /tmp/exam-assets/scripts/setup/q*_setup.sh; do $script; done
log "Exam environment preparation completed successfully"
exit 0