provisioning-outreach/presentations/rust-laspalmas-250926/demos/06-migration-scenarios.nu

138 lines
5.3 KiB
Text
Raw Normal View History

#!/usr/bin/env nu
# Demo 6: Migration from Existing Tools
# Shows migration paths from Terraform, Ansible, etc.
# Target audience: Teams with existing infrastructure
print "=== Demo 6: Migration from Existing Tools ==="
print "\n1. Analyzing existing Terraform infrastructure..."
# Import existing Terraform state
print "Importing Terraform state and configurations..."
run-external "provisioning" import terraform --state-file "terraform.tfstate" --config-dir "./terraform"
print "\n2. Current Terraform configuration analysis:"
let terraform_analysis = [
{resource_type: "aws_instance", count: 12, complexity: "Medium", migration: "✅ Supported"},
{resource_type: "aws_rds_instance", count: 3, complexity: "Low", migration: "✅ Supported"},
{resource_type: "aws_load_balancer", count: 4, complexity: "High", migration: "✅ Supported"},
{resource_type: "aws_security_group", count: 18, complexity: "Medium", migration: "✅ Supported"},
{resource_type: "aws_vpc", count: 2, complexity: "High", migration: "✅ Supported"},
{resource_type: "custom_module", count: 5, complexity: "High", migration: "🟡 Manual review"}
]
$terraform_analysis | table
print "\n3. Generating equivalent KCL configuration..."
run-external "provisioning" convert terraform --input "./terraform" --output "./kcl/migrated-infra.k"
print "\n4. Terraform vs KCL comparison:"
print "\n🔄 Original Terraform (HCL):"
print """
resource "aws_instance" "web" {
ami = "ami-12345678"
instance_type = "t3.medium"
tags = {
Name = "web-server"
}
}"""
print "\n✨ Converted KCL:"
print """
webServer = ec2.Instance {
ami: "ami-12345678"
instanceType: "t3.medium"
tags: {
Name: "web-server"
}
}"""
print "\n5. Ansible playbook migration:"
run-external "provisioning" import ansible --playbook-dir "./ansible" --inventory "./inventory"
let ansible_analysis = [
{playbook: "web-setup.yml", tasks: 15, migration: "✅ Converted"},
{playbook: "database.yml", tasks: 8, migration: "✅ Converted"},
{playbook: "monitoring.yml", tasks: 12, migration: "✅ Converted"},
{playbook: "security.yml", tasks: 6, migration: "🟡 Needs review"}
]
print "\n📋 Ansible Playbook Analysis:"
$ansible_analysis | table
print "\n6. Side-by-side migration approach:"
let migration_strategy = [
{phase: "Phase 1", duration: "Week 1-2", approach: "Import + validate", risk: "None"},
{phase: "Phase 2", duration: "Week 3-4", approach: "Run in parallel", risk: "Low"},
{phase: "Phase 3", duration: "Week 5-6", approach: "Gradual cutover", risk: "Low"},
{phase: "Phase 4", duration: "Week 7-8", approach: "Full migration", risk: "Medium"}
]
$migration_strategy | table
print "\n7. Migration validation:"
run-external "provisioning" migrate validate --source terraform --target kcl --dry-run
print "\n8. Resource drift detection:"
let drift_analysis = [
{resource: "web-server-01", terraform: "t3.medium", actual: "t3.medium", status: "✅ No drift"},
{resource: "web-server-02", terraform: "t3.medium", actual: "t3.large", status: "⚠️ Drift detected"},
{resource: "database-01", terraform: "db.t3.micro", actual: "db.t3.micro", status: "✅ No drift"},
{resource: "load-balancer", terraform: "ALB", actual: "ALB", status: "✅ No drift"}
]
$drift_analysis | table
print "\n9. Benefits after migration:"
let migration_benefits = [
{metric: "Configuration errors", before: "15/month", after: "2/month", improvement: "87% reduction"},
{metric: "Deployment time", before: "45 minutes", after: "8 minutes", improvement: "82% faster"},
{metric: "Resource consistency", before: "78%", after: "99%", improvement: "+21%"},
{metric: "Team productivity", before: "Baseline", after: "2.5x", improvement: "150% increase"}
]
$migration_benefits | table
print "\n10. Cost impact of migration:"
let cost_impact = [
{category: "Tool licensing", before: "$2,400/year", after: "$0/year", savings: "$2,400"},
{category: "Training", before: "$8,000", after: "$3,000", savings: "$5,000"},
{category: "Maintenance", before: "$15,000/year", after: "$6,000/year", savings: "$9,000"},
{category: "Downtime costs", before: "$25,000/year", after: "$5,000/year", savings: "$20,000"}
]
$cost_impact | table
print "\n11. Rollback strategy:"
run-external "provisioning" migrate rollback-plan --checkpoint "pre-migration" --emergency-only
print "\n🛡 Rollback Plan:"
print "• Terraform state backed up automatically"
print "• Ansible playbooks preserved"
print "• 1-command rollback available for 90 days"
print "• Zero-downtime rollback tested and verified"
print "\n12. Team training and onboarding:"
let training_plan = [
{role: "DevOps Engineers", duration: "4 hours", focus: "CLI and automation"},
{role: "Developers", duration: "2 hours", focus: "Basic provisioning"},
{role: "SREs", duration: "6 hours", focus: "Advanced troubleshooting"},
{role: "Managers", duration: "1 hour", focus: "Benefits and ROI"}
]
$training_plan | table
print "\n✅ Migration Results:"
print "📈 Success Rate: 95% of resources migrated automatically"
print "⏱️ Migration Time: 2-4 weeks vs 6+ months traditional"
print "🛡️ Risk Level: Low (reversible, parallel execution)"
print "💰 Total Savings: $36,400 in first year"
print "🚀 Team Velocity: 2.5x improvement in infrastructure changes"