# Epic ENG-4 Terraform refactoring Tasks remaining to be performed within ENG-4 Terraform refactoring ## 1) Move remaining resourcs from Infrastructure repository to foundational repository () ##### Time estimation -> resource migration 3-4 working days. The migration process is dependent on the time taken to review and evaluate each MR. Working day = 8h - [x] environments/account: - [ ] 307275847480 [MR open](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/215) - [ ] newrelic_27588 [MR open](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/233) - [x] legacy/global [MR open](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/271) - [x] monitoring/loging [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/186) - [x] prod/db: - [x] cmaths [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/198) - [x] progression [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/199) - [x] prod/gitlab (already migrated) [MR Merged](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/193) - [x] prod/jenkins [MR merged](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/228) - [x] prod/maths [MR merged](https://gitlab.sumdog.com/DevOps/infrastructure/-/merge_requests/348) - [x] prod/questions [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/213) - [x] prod/wordpress [MR merged ](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/275) - [x] prod/wordpress-stack [MR merged ](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/275) - [x] staging/sandbox [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/201) - [x] test [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/206) - [x] state (already exist, no need to migrate) - [ ] **vpc** [MR Open, should be reviewed at the beginning, because of its complexity](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/178) - [x] **lb** [MR merged, should be reviewed at the beginning, because of its complexity](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/179) - [x] modules - [x] autoscaling-group-no-cloudformation - [x] bastion-host (already exist, no need to migrate) - [x] efs-filesystem [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/199) - [x] route53-entry-alias (already exist, no need to migrate) - [x] route53-entry-weighted (already exist, no need to migrate) - [x] scheduled-lambda [MR merged](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/271) - [x] security-group-rules (already exist, no need to migrate) - [x] ubuntu-ami [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/198) ## 2) Transferring legacy services ##### Time estimation -> resource migration 3-4 working days. - [ ] Resource usage analysis - [draft branch](https://gitlab.sumdog.com/DevOps/infrastructure/-/tree/feature/legacy-service-usage-analysis/environments/legacy/global) WIP These documents can be usefull: - https://hackmd.io/8UYHnJQyS72OQHU1zRwOZw - https://hackmd.io/8g7dZHnAS6y0FHDNzaa-Cg - https://docs.driftctl.com/0.25.0 - to analyse terraform coverege and usage - [ ] basic refactoring(removing provider.tf, provider aliases, syntax check) WIP - [x] list of sg that are not used This step can be done in parallel with 1,3 ## 3) DNS puzzle ##### Time estimation -> resource migration 2-3 working days. - [x] Migrate all records from route53 to code in terraform [commit id ](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/commit/1ac31560ede540539cfd189045fabda4e8cbd2a0) - [x] Provide record granularity, by domain. Provide a simple way to manage records (Using the for loop) - [x] Import all records into the state file on workspace prod and correct any errors - [x] Determine what to do with records that do not exist on the remote state (which records to add/update/delete) - [x] Implementing potential changes and generating the final terraform plan - [x] Approve everything using terraform apply [MR merged](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/258) This step can be done in parallel with 1,2 ## 4) Terraform version upgrade ##### Time estimation -> resource migration 5-7 working days. - [x] Module code preparation for Terraform 0.12 version [Git Branch](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/tree/feature/prepare_code_of_module_to_v13) - [x] Preparation code of services for Terraform 0.12 version [Git Branch](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/tree/feature/prepare_code_of_module_to_v13) - [x] databases - [x] dns - [x] meta - [x] legacy/global [MR merged](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/271) - [x] accesses - [x] assets - [x] cache - [x] cdn - [x] certificates - [x] ci_jenkins - [x] ci - [x] container_repository - [x] courses - [x] data_sources - [x] db_progression - [x] db_questions - [x] db_reports - [x] db_skills - [x] db_web - [x] db_world - [x] elb - [x] git - [x] lb - [x] main - [x] mq_maths - [x] outputs - [x] packer - [x] progression - [x] question_font - [x] reports - [x] skills - [x] systems - [x] test_servers - [x] var cert_arns - [x] var_cidr_blocks - [x] versions - [x] web - [x] webjob - [x] wiki - [x] services/ - [x] analysis (state written in 0.15 version) - [x] bastion - [x] courses - [x] events-data - [x] game-beta - [x] game-stack-beta - [x] gitlab - [x] gitlab-runner - [x] http-default-responses - [x] jenkins - [x] maths - [x] pet-test-servers - [x] pgadmin - [x] progression - [x] progression-dynamic - [x] progression-redis - [x] progression-seed - [x] questions - [x] rabbitmq - [x] redis - [x] reports [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/235) - [x] reports-beta - [x] skills [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/235) - [x] web - [x] web-canary - [x] webjob - [x] wordpress - [x] wordpress-stack - [x] world [MR closed no longer required](https://gitlab.sumdog.com/DevOps/foundational-infrastructure/-/merge_requests/235) - [x] storage / - [ ] Testing the code after the update - [ ] Repeat until the latest version is applied ## 5) Refactoring ##### Time estimation -> resource migration 4-6 working days. - [ ] splitting resources into modules, if possible - [ ] ensure code readability - [ ] legacy catalog refactoring ## 6) Prepare documentation