provisioning-outreach/presentations/pres-prvng/demos/03-batch-workflow-demo.sh

180 lines
8.4 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Demo 3: Batch Workflow - Multi-Cloud Orchestration
# Time: ~2 minutes
# Shows: Multi-provider orchestration, dependency management, real-time progress
set -e
echo "╔════════════════════════════════════════════════════════╗"
echo "║ Demo 3: Batch Workflow - Multi-Cloud Orchestration ║"
echo "║ Time: ~2 minutes ║"
echo "╚════════════════════════════════════════════════════════╝"
echo ""
# Step 1: Show command
echo "Step 1⃣ Batch workflow submission"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "$ provisioning batch submit workflows/web_app.k"
echo ""
sleep 2
# Step 2: Show batch definition
echo "Step 2⃣ Batch Workflow Definition (KCL)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "batch_workflow: BatchWorkflow = {"
echo " name = \"web_app_deployment\""
echo " parallel_limit = 5"
echo ""
echo " operations = ["
echo " {id = \"upcloud_db\", provider = \"upcloud\"},"
echo " {id = \"aws_compute\", provider = \"aws\","
echo " dependencies = [\"upcloud_db\"]},"
echo " {id = \"local_cache\", provider = \"local\","
echo " dependencies = [\"aws_compute\"]}"
echo " ]"
echo "}"
echo ""
sleep 2
# Step 3: Parsing and validation
echo "Step 3⃣ Parsing & Validation"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "✓ KCL syntax validated"
echo "✓ Schema compliance checked"
echo "✓ Dependency graph validated (no cycles)"
echo "✓ Provider credentials verified"
echo " • UpCloud: ✓ authenticated"
echo " • AWS: ✓ authenticated (role: provisioning-deployer)"
echo " • Local: ✓ accessible"
echo "✓ All validations passed"
echo ""
sleep 2
# Step 4: Orchestration plan
echo "Step 4⃣ Dependency Resolution & Orchestration Plan"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "Execution Graph:"
echo ""
echo " upcloud_db (2 min)"
echo " ↓"
echo " aws_compute (3 min)"
echo " ↓"
echo " local_cache (1 min)"
echo ""
echo "Sequential Dependency Chain: ✓ Verified"
echo "Total estimated time: ~6 minutes (sequential)"
echo ""
sleep 2
# Step 5: Real-time progress
echo "Step 5⃣ Real-Time Workflow Progress"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
# Simulate progress
for i in {1..5}; do
echo "[$(date +%H:%M:%S)] Workflow ID: batch-20241114-001234"
echo "Status: RUNNING"
echo ""
echo "Task Progress:"
if [ $i -ge 1 ]; then
echo " ✓ upcloud_db [████████████████████] 100% (2min 00sec)"
else
echo " ⧖ upcloud_db [████░░░░░░░░░░░░░░░░] 20%"
fi
if [ $i -ge 2 ]; then
echo " ✓ aws_compute [████████████████████] 100% (3min 00sec)"
elif [ $i -gt 1 ]; then
echo " ⧖ aws_compute [████████░░░░░░░░░░░░] 40%"
else
echo " ⏳ aws_compute [░░░░░░░░░░░░░░░░░░░░] 0% (waiting)"
fi
if [ $i -ge 3 ]; then
echo " ✓ local_cache [████████████████████] 100% (1min 00sec)"
elif [ $i -gt 2 ]; then
echo " ⧖ local_cache [██░░░░░░░░░░░░░░░░░░] 10%"
else
echo " ⏳ local_cache [░░░░░░░░░░░░░░░░░░░░] 0% (waiting)"
fi
echo ""
echo "Overall Progress: $(($i * 20))%"
echo "Elapsed: ~$(($i))min Remaining: ~$((6 - $i))min"
echo ""
echo "─────────────────────────────────────────────────────"
echo ""
sleep 1
done
# Final status
echo "Step 6⃣ Final Status"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "╔════════════════════════════════════════════════════╗"
echo "║ Batch Workflow: SUCCESS ✓ │"
echo "├────────────────────────────────────────────────────┤"
echo "│ Workflow ID: batch-20241114-001234 │"
echo "│ Total Duration: 6 minutes 2 seconds │"
echo "│ │"
echo "│ Tasks Completed: │"
echo "│ ✓ upcloud_db (2 servers created) │"
echo "│ ✓ aws_compute (1 auto-scaling group) │"
echo "│ ✓ local_cache (1 cache instance) │"
echo "│ │"
echo "│ Resources Created: │"
echo "│ • 2 servers @ UpCloud (Frankfurt) │"
echo "│ • 4 instances @ AWS EC2 (us-east-1) │"
echo "│ • 1 cache @ Local (Redis) │"
echo "│ │"
echo "│ Network Configuration: │"
echo "│ • VPN tunnel: UpCloud ↔ AWS ✓ │"
echo "│ • DNS: Configured ✓ │"
echo "│ • Load balancer: Active ✓ │"
echo "│ │"
echo "│ Cost Estimation: │"
echo "│ • Monthly: €450 (UpCloud) + $200 (AWS) │"
echo "│ • Hourly: €19.50/hr │"
echo "│ │"
echo "│ Audit Trail: Complete ✓ │"
echo "│ Logged all actions for compliance │"
echo "│ │"
echo "╚════════════════════════════════════════════════════╝"
echo ""
# Step 7: Access details
echo "Step 7⃣ Access Your Deployment"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "Your web application is now running!"
echo ""
echo "Access Points:"
echo " • Web API: https://api.demo.example.com"
echo " • Admin Dashboard: https://admin.demo.example.com"
echo " • Database: db-01.upcloud.example.com:5432"
echo " • Cache: cache-01.local.example.com:6379"
echo ""
echo "Management:"
echo " $ provisioning batch status batch-20241114-001234"
echo " $ provisioning batch monitor batch-20241114-001234 --logs"
echo " $ provisioning audit query --workflow batch-20241114-001234"
echo ""
echo "To rollback in case of issues:"
echo " $ provisioning batch rollback batch-20241114-001234"
echo ""
echo "╔════════════════════════════════════════════════════════╗"
echo "║ Key Insights: ║"
echo "║ • Single workflow, multiple clouds ║"
echo "║ • Automatic dependency sequencing ║"
echo "║ • Type-safe configuration (KCL) ║"
echo "║ • Real-time monitoring & audit trail ║"
echo "║ • Easy rollback if needed ║"
echo "╚════════════════════════════════════════════════════════╝"