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