Files
malta-workshop/scripts/deploy.sh
2025-08-11 12:07:23 +02:00

53 lines
1.6 KiB
Bash

#!/usr/bin/env bash
set -e
echo "🚀 Deploying Co-op Cloud workshop..."
cd terraform
terraform apply \
-var="hcloud_token=$HCLOUD_TOKEN" \
-var="domain=codecrispi.es" \
-var="ssh_public_key=$(cat ~/.ssh/id_rsa.pub)" \
-auto-approve
echo "⏳ Waiting for servers to be ready..."
# Wait for SSH + Docker to be ready on each server
terraform output -json participant_ips | jq -r 'keys[]' | while read participant; do
echo "Checking $participant.codecrispi.es..."
# Wait for SSH to be available
while ! ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no workshop@$participant.codecrispi.es "exit" 2>/dev/null; do
echo " SSH not ready yet, retrying in 10s..."
sleep 10
done
# Wait for Docker + abra to be ready
while ! ssh -o StrictHostKeyChecking=no workshop@$participant.codecrispi.es "docker info && which abra" &>/dev/null; do
echo " Docker/abra not ready yet, retrying in 5s..."
sleep 5
done
echo "$participant ready!"
done
echo "🔧 Setting up each server..."
terraform output -json participant_ips | jq -r 'keys[]' | while read participant; do
echo "Configuring $participant..."
ssh -o StrictHostKeyChecking=no workshop@$participant.codecrispi.es << EOF
# Deploy Traefik
abra app deploy traefik.$participant.codecrispi.es
# Wait for Traefik to be ready
until curl -f https://traefik.$participant.codecrispi.es/ping 2>/dev/null; do
echo "Waiting for Traefik..."
sleep 5
done
echo "✅ $participant fully configured!"
EOF
done
echo "🎉 Workshop ready! Participants can access their servers."