179 lines
8.4 KiB
Bash
179 lines
8.4 KiB
Bash
#!/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 "╚════════════════════════════════════════════════════════╝"
|