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

179 lines
8.4 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "╚════════════════════════════════════════════════════════╝"