From 4063809e7300aaee49e9f985d781666f3c1b25b6 Mon Sep 17 00:00:00 2001 From: Sujay Samanta Date: Thu, 8 Jan 2026 10:25:47 +0530 Subject: [PATCH 1/4] Remove generated Terraform files and configurations from the stacks migration infrastructure --- _stacks_generated/.terraform-version | 1 - _stacks_generated/.terraform.lock.hcl | 26 ------------ _stacks_generated/components.tfcomponent.hcl | 28 ------------- _stacks_generated/deployment.tfdeploy.hcl | 41 ------------------- _stacks_generated/outputs.tfcomponent.hcl | 15 ------- _stacks_generated/providers.tfcomponent.hcl | 19 --------- _stacks_generated/variables.tfcomponent.hcl | 40 ------------------- stacks_migration_infra/.terraform.lock.hcl | 42 -------------------- stacks_migration_infra/main.tf | 36 ----------------- stacks_migration_infra/output.tf | 20 ---------- stacks_migration_infra/variables.tf | 30 -------------- 11 files changed, 298 deletions(-) delete mode 100755 _stacks_generated/.terraform-version delete mode 100755 _stacks_generated/.terraform.lock.hcl delete mode 100755 _stacks_generated/components.tfcomponent.hcl delete mode 100755 _stacks_generated/deployment.tfdeploy.hcl delete mode 100755 _stacks_generated/outputs.tfcomponent.hcl delete mode 100755 _stacks_generated/providers.tfcomponent.hcl delete mode 100755 _stacks_generated/variables.tfcomponent.hcl delete mode 100644 stacks_migration_infra/.terraform.lock.hcl delete mode 100644 stacks_migration_infra/main.tf delete mode 100644 stacks_migration_infra/output.tf delete mode 100644 stacks_migration_infra/variables.tf diff --git a/_stacks_generated/.terraform-version b/_stacks_generated/.terraform-version deleted file mode 100755 index d0e60d6..0000000 --- a/_stacks_generated/.terraform-version +++ /dev/null @@ -1 +0,0 @@ -1.13.5 \ No newline at end of file diff --git a/_stacks_generated/.terraform.lock.hcl b/_stacks_generated/.terraform.lock.hcl deleted file mode 100755 index bb3e5b7..0000000 --- a/_stacks_generated/.terraform.lock.hcl +++ /dev/null @@ -1,26 +0,0 @@ -# This file is maintained automatically by "terraform stacks providers-lock". -# Manual edits may be lost in future updates. - -provider "registry.terraform.io/hashicorp/aws" { - version = "6.27.0" - hashes = [ - "h1:6PyQLswSmmWDFh6G2H4XIeBG8kY0pKAPKLoBarRdfNs=", - "h1:bixp2PSsP5ZGBczGCxcbSDn6lF5QFlUXlNroq9cdab4=", - "h1:emgTfB1LXSFYh9uAwgsRMoMIN5Wz7jNNKq3rqC0EHWk=", - "zh:177a24b806c72e8484b5cabc93b2b38e3d770ae6f745a998b54d6619fd0e8129", - "zh:4ac4a85c14fb868a3306b542e6a56c10bd6c6d5a67bc0c9b8f6a9060cf5f3be7", - "zh:552652185bc85c8ba1da1d65dea47c454728a5c6839c458b6dcd3ce71c19ccfc", - "zh:60284b8172d09aee91eae0856f09855eaf040ce3a58d6933602ae17c53f8ed04", - "zh:6be38d156756ca61fb8e7c752cc5d769cd709686700ac4b230f40a6e95b5dbc9", - "zh:7a409138fae4ef42e3a637e37cb9efedf96459e28a3c764fc4e855e8db9a7485", - "zh:8070cf5224ed1ed3a3e9a59f7c30ff88bf071c7567165275d477c1738a56c064", - "zh:894439ef340a9a79f69cd759e27ad11c7826adeca27be1b1ca82b3c9702fa300", - "zh:89d035eebf08a97c89374ff06040955ddc09f275ecca609d0c9d58d149bef5cf", - "zh:985b1145d724fc1f38369099e4a5087141885740fd6c0b1dbc492171e73c2e49", - "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", - "zh:a80b47ae8d1475201c86bd94a5dcb9dd4da5e8b73102a90820b68b66b76d50fd", - "zh:d3395be1556210f82199b9166a6b2e677cee9c4b67e96e63f6c3a98325ad7ab0", - "zh:db0b869d09657f6f1e4110b56093c5fcdf9dbdd97c020db1e577b239c0adcbce", - "zh:ffc72e680370ae7c21f9bd3082c6317730df805c6797427839a6b6b7e9a26a01", - ] -} diff --git a/_stacks_generated/components.tfcomponent.hcl b/_stacks_generated/components.tfcomponent.hcl deleted file mode 100755 index 6f95134..0000000 --- a/_stacks_generated/components.tfcomponent.hcl +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by tf-migrate 2.0.0-beta1 - - -component "ec2_instance" { - source = "terraform-aws-modules/ec2-instance/aws" - - inputs = { - "ami" = var.ami_id - "instance_type" = var.instance_type - "monitoring" = true - "name" = var.instance_name - "subnet_id" = "subnet-04ac8df91e75657c9" - "tags" = { - Terraform = "true" - Environment = "dev" - } - "vpc_security_group_ids" = [] - } - - version = "~> 6.0" - - - providers = { - aws = provider.aws.this - } -} - - diff --git a/_stacks_generated/deployment.tfdeploy.hcl b/_stacks_generated/deployment.tfdeploy.hcl deleted file mode 100755 index c98c445..0000000 --- a/_stacks_generated/deployment.tfdeploy.hcl +++ /dev/null @@ -1,41 +0,0 @@ -# Generated by tf-migrate 2.0.0-beta1 - - - -# Note on stacks authentication: -# tf-migrate cannot generate stack authentication, this needs to be manually added before execute -# More on authentication - https://developer.hashicorp.com/terraform/language/stacks/deploy/authenticate - -store "varset" "tokens" { - id = "varset-xvfRyT1qNahGfpWm" - category = "env" -} - -deployment "dev-workspace" { - inputs = { - access_key = store.varset.tokens.AWS_ACCESS_KEY_ID - secret_key = store.varset.tokens.AWS_SECRET_ACCESS_KEY - session_token = store.varset.tokens.AWS_SESSION_TOKEN - instance_type = "t3.micro" - ami_id = "ami-0dee22c13ea7a9a67" - instance_name = "stack-v3-test-dev-instance" - } - import = true -} - - - -deployment "prod-workspace" { - inputs = { - access_key = store.varset.tokens.AWS_ACCESS_KEY_ID - secret_key = store.varset.tokens.AWS_SECRET_ACCESS_KEY - session_token = store.varset.tokens.AWS_SESSION_TOKEN - instance_name = "stack-v3-test-prod-instance" - instance_type = "t3.micro" - ami_id = "ami-0dee22c13ea7a9a67" - } - import = true -} - - - diff --git a/_stacks_generated/outputs.tfcomponent.hcl b/_stacks_generated/outputs.tfcomponent.hcl deleted file mode 100755 index 07f7503..0000000 --- a/_stacks_generated/outputs.tfcomponent.hcl +++ /dev/null @@ -1,15 +0,0 @@ -# Generated by tf-migrate 2.0.0-beta1 - - -output "instance_id" { - description = "The ID of the EC2 instance" - value = component.ec2_instance.id - type = string -} - -output "instance_public_ip" { - description = "The public IP address of the EC2 instance" - value = component.ec2_instance.public_ip - type = string -} - diff --git a/_stacks_generated/providers.tfcomponent.hcl b/_stacks_generated/providers.tfcomponent.hcl deleted file mode 100755 index f1fe711..0000000 --- a/_stacks_generated/providers.tfcomponent.hcl +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by tf-migrate 2.0.0-beta1 - - - -provider "aws" "this" { - config { - region = "ap-south-1" - access_key = var.access_key - secret_key = var.secret_key - token = var.session_token - } -} - -required_providers { - aws = { - source = "hashicorp/aws" - version = ">= 4.66.0, >= 5.0.0" - } -} diff --git a/_stacks_generated/variables.tfcomponent.hcl b/_stacks_generated/variables.tfcomponent.hcl deleted file mode 100755 index 8230dd1..0000000 --- a/_stacks_generated/variables.tfcomponent.hcl +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by tf-migrate 2.0.0-beta1 - - -variable "instance_name" { - description = "Name to be used on all resources as prefix" - type = string - default = "example-instance" -} - -variable "instance_type" { - description = "The type of instance to start" - type = string - default = "t3.micro" -} - -variable "ami_id" { - description = "ID of AMI to use for the instance" - type = string - default = "ami-0dee22c13ea7a9a67" # Amazon Linux 2023 AMI in ap-south-1 (verify this if needed, but using a placeholder/common one is usually okay for templates) -} - -variable "access_key" { - description = "AWS access key" - type = string - ephemeral = true -} - -variable "secret_key" { - description = "AWS sensitive secret key." - type = string - sensitive = true - ephemeral = true -} - -variable "session_token" { - description = "AWS session token." - type = string - sensitive = true - ephemeral = true -} diff --git a/stacks_migration_infra/.terraform.lock.hcl b/stacks_migration_infra/.terraform.lock.hcl deleted file mode 100644 index 2795e4f..0000000 --- a/stacks_migration_infra/.terraform.lock.hcl +++ /dev/null @@ -1,42 +0,0 @@ -# This file is maintained automatically by "terraform init". -# Manual edits may be lost in future updates. - -provider "registry.terraform.io/hashicorp/tfe" { - version = "0.72.0" - constraints = ">= 0.67.0" - hashes = [ - "h1:DSx+rdyWBkDyBcollXYzGehREnCvwe5dyNT+gK0S0YQ=", - "zh:0c5a72feab8b911d8ecd618aa875e59693f7ba18d01cac2938693d15d9a3de88", - "zh:2e902f3f26d76f856767c7033de01de94f2128779602eec530ff7b03775ff379", - "zh:4489a949eb07bc606947ae8fedc2e681d12db1ea63915f88698cb2e594fca478", - "zh:541d4532c875b2ee7ecb98da9a1461e76788893b623b0adf7c634d9fff7770e3", - "zh:78db652be0568fafc326e995e3eff153381a0d3abf1ecf96347f1bdf65a2e881", - "zh:89f71cbc5ee52afd5e98bf4603d3f2528bb6272cfb77f0215d9c5ffab3c06d6a", - "zh:a6bd22d4425b425a97cffbb85eddafb9c958ed15d4b95146a0c6da15d97bf098", - "zh:a72507ca718c3040845f14e7f3e72a8fe3fc8b581edcdfc301305e0087b19991", - "zh:a8eb3261495366e739e155d9b65864d88387c409552ccf82e50b9553a3a4ab89", - "zh:aab6de3906be0f112b3ed04179624cd34200b258517f9fad1830af97ac4ef708", - "zh:e194e5d053bd95bbf57dc6ab326850c36ad3938573ba4281b5e465a7ffafb7ab", - "zh:f603f1e884c8a194ea762526f2e462d22599d02fe12cb83ab0c030369be4bd4e", - ] -} - -provider "registry.terraform.io/hashicorp/tfmigrate" { - version = "2.0.0-beta1" - constraints = "2.0.0-beta1" - hashes = [ - "h1:mKHG4z8k+qLDkP+MpPdXu8THvgs2l4/NzxWHBBOR+Zs=", - "zh:1c2433b959b06ed4d1ee77bd41e15c43af6c3eb06a1117b061b152faeb189c0c", - "zh:3ddd5866281772c7c6ed1afbbedbe19646aff7630155b783dc7e553788a5fad0", - "zh:46ee906b17321ba58bcba267acdacf141cec6173d9da16fbe12e4e6299586ea5", - "zh:864d0b62faec50e435e0b410bde3d60e8bede42929ea34f9156ba5545c6f8ebe", - "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", - "zh:8ab21f0c9014493c3d3676e87b90558aee1a50b48235820a5eb5f537b73bb0e0", - "zh:925cacc6649881255a64faef44a30a525762592de8de321cea24d0374e972ac9", - "zh:9e6b69a03b46881c290965187b471f463467e74101c0caa0b2a26c243fa728a7", - "zh:9fee5bf7e51705a4dc5631d38d1642582845673d61285195358ee2349dd194d1", - "zh:c27ae5372c7b96d0eb42ef63c3377be92b89239553a611ea94a3d3656dc65a8c", - "zh:d26605feea4eb31ef7fec832095d449b0249b8e0bf556fab275e5edf6ed38568", - "zh:e28ab6f7754a0ae63844ed336ccffd6390a722a196260bf595b66c931a5a4549", - ] -} diff --git a/stacks_migration_infra/main.tf b/stacks_migration_infra/main.tf deleted file mode 100644 index 576b11d..0000000 --- a/stacks_migration_infra/main.tf +++ /dev/null @@ -1,36 +0,0 @@ -terraform { - required_providers { - tfe = { - source = "hashicorp/tfe" - version = ">= 0.67.0" - } - tfmigrate = { - source = "hashicorp/tfmigrate" - version = "2.0.0-beta1" - } - } -} - -provider "tfe" { - hostname = var.tfe_hostname - organization = var.organization_name -} - -resource "tfe_project" "stack_project" { - name = var.project_name - organization = var.organization_name -} - -resource "tfe_stack" "stack" { - name = var.stack_name - project_id = tfe_project.stack_project.id -} - -resource "tfmigrate_stack_migration" "stack_migration" { - config_file_dir = var.stacks_config_file_dir - organization = var.organization_name - name = tfe_stack.stack.name - project = tfe_project.stack_project.name - terraform_config_dir = var.terraform_config_dir - workspace_deployment_mapping = var.workspace_deployment_mapping -} \ No newline at end of file diff --git a/stacks_migration_infra/output.tf b/stacks_migration_infra/output.tf deleted file mode 100644 index 8c6ced1..0000000 --- a/stacks_migration_infra/output.tf +++ /dev/null @@ -1,20 +0,0 @@ -output "project_url" { - value = "https://app.terraform.io/app/${var.organization_name}/projects/${tfe_project.stack_project.id}" -} - -output "stack_url" { - value = "https://app.terraform.io/app/${var.organization_name}/projects/${tfe_project.stack_project.id}/stacks/${tfe_stack.stack.id}" -} - -locals { - stack_deployment_details = ( - tfmigrate_stack_migration.stack_migration.migration_hash != "" ? - provider::tfmigrate::decode_stacks_migration_hash_to_json( - tfmigrate_stack_migration.stack_migration.migration_hash - ) : null - ) -} - -output "stack_deployment_details" { - value = local.stack_deployment_details -} \ No newline at end of file diff --git a/stacks_migration_infra/variables.tf b/stacks_migration_infra/variables.tf deleted file mode 100644 index 4fa6ecd..0000000 --- a/stacks_migration_infra/variables.tf +++ /dev/null @@ -1,30 +0,0 @@ -variable "organization_name" { - default = "sujay-test-01" -} - -variable "tfe_hostname" { - default = "app.terraform.io" -} - -variable "project_name" { - default = "new-stacks-project" -} - -variable "stack_name" { - default = "new-stacks-v1" -} - -variable "stacks_config_file_dir" { - default = "/Users/sujaysamanta/Workspace/Cursor-AI/terraform-stacks-migration-test/stack-terraform-test-v4/fantastic-octo-computing-machine/_stacks_generated" -} - -variable "terraform_config_dir" { - default = "/Users/sujaysamanta/Workspace/Cursor-AI/terraform-stacks-migration-test/stack-terraform-test-v4/fantastic-octo-computing-machine" -} - -variable "workspace_deployment_mapping" { - default = { - dev-workspace = "dev-workspace" - prod-workspace = "prod-workspace" - } -} From 97a991b3d785a31fce1f71fb9fc94991e37f37be Mon Sep 17 00:00:00 2001 From: Sujay Samanta Date: Thu, 8 Jan 2026 11:25:16 +0530 Subject: [PATCH 2/4] Add generated Terraform configuration files for stack migration and AWS resources --- _stacks_generated/.terraform-version | 1 + _stacks_generated/.terraform.lock.hcl | 26 ++++++++++++ _stacks_generated/components.tfcomponent.hcl | 28 +++++++++++++ _stacks_generated/deployment.tfdeploy.hcl | 41 +++++++++++++++++++ _stacks_generated/outputs.tfcomponent.hcl | 15 +++++++ _stacks_generated/providers.tfcomponent.hcl | 19 +++++++++ _stacks_generated/variables.tfcomponent.hcl | 40 +++++++++++++++++++ stacks_migration_infra/.terraform.lock.hcl | 42 ++++++++++++++++++++ stacks_migration_infra/main.tf | 42 ++++++++++++++++++++ stacks_migration_infra/output.tf | 20 ++++++++++ stacks_migration_infra/variables.tf | 30 ++++++++++++++ 11 files changed, 304 insertions(+) create mode 100755 _stacks_generated/.terraform-version create mode 100755 _stacks_generated/.terraform.lock.hcl create mode 100755 _stacks_generated/components.tfcomponent.hcl create mode 100755 _stacks_generated/deployment.tfdeploy.hcl create mode 100755 _stacks_generated/outputs.tfcomponent.hcl create mode 100755 _stacks_generated/providers.tfcomponent.hcl create mode 100755 _stacks_generated/variables.tfcomponent.hcl create mode 100644 stacks_migration_infra/.terraform.lock.hcl create mode 100644 stacks_migration_infra/main.tf create mode 100644 stacks_migration_infra/output.tf create mode 100644 stacks_migration_infra/variables.tf diff --git a/_stacks_generated/.terraform-version b/_stacks_generated/.terraform-version new file mode 100755 index 0000000..d0e60d6 --- /dev/null +++ b/_stacks_generated/.terraform-version @@ -0,0 +1 @@ +1.13.5 \ No newline at end of file diff --git a/_stacks_generated/.terraform.lock.hcl b/_stacks_generated/.terraform.lock.hcl new file mode 100755 index 0000000..bb3e5b7 --- /dev/null +++ b/_stacks_generated/.terraform.lock.hcl @@ -0,0 +1,26 @@ +# This file is maintained automatically by "terraform stacks providers-lock". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/aws" { + version = "6.27.0" + hashes = [ + "h1:6PyQLswSmmWDFh6G2H4XIeBG8kY0pKAPKLoBarRdfNs=", + "h1:bixp2PSsP5ZGBczGCxcbSDn6lF5QFlUXlNroq9cdab4=", + "h1:emgTfB1LXSFYh9uAwgsRMoMIN5Wz7jNNKq3rqC0EHWk=", + "zh:177a24b806c72e8484b5cabc93b2b38e3d770ae6f745a998b54d6619fd0e8129", + "zh:4ac4a85c14fb868a3306b542e6a56c10bd6c6d5a67bc0c9b8f6a9060cf5f3be7", + "zh:552652185bc85c8ba1da1d65dea47c454728a5c6839c458b6dcd3ce71c19ccfc", + "zh:60284b8172d09aee91eae0856f09855eaf040ce3a58d6933602ae17c53f8ed04", + "zh:6be38d156756ca61fb8e7c752cc5d769cd709686700ac4b230f40a6e95b5dbc9", + "zh:7a409138fae4ef42e3a637e37cb9efedf96459e28a3c764fc4e855e8db9a7485", + "zh:8070cf5224ed1ed3a3e9a59f7c30ff88bf071c7567165275d477c1738a56c064", + "zh:894439ef340a9a79f69cd759e27ad11c7826adeca27be1b1ca82b3c9702fa300", + "zh:89d035eebf08a97c89374ff06040955ddc09f275ecca609d0c9d58d149bef5cf", + "zh:985b1145d724fc1f38369099e4a5087141885740fd6c0b1dbc492171e73c2e49", + "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", + "zh:a80b47ae8d1475201c86bd94a5dcb9dd4da5e8b73102a90820b68b66b76d50fd", + "zh:d3395be1556210f82199b9166a6b2e677cee9c4b67e96e63f6c3a98325ad7ab0", + "zh:db0b869d09657f6f1e4110b56093c5fcdf9dbdd97c020db1e577b239c0adcbce", + "zh:ffc72e680370ae7c21f9bd3082c6317730df805c6797427839a6b6b7e9a26a01", + ] +} diff --git a/_stacks_generated/components.tfcomponent.hcl b/_stacks_generated/components.tfcomponent.hcl new file mode 100755 index 0000000..6f95134 --- /dev/null +++ b/_stacks_generated/components.tfcomponent.hcl @@ -0,0 +1,28 @@ +# Generated by tf-migrate 2.0.0-beta1 + + +component "ec2_instance" { + source = "terraform-aws-modules/ec2-instance/aws" + + inputs = { + "ami" = var.ami_id + "instance_type" = var.instance_type + "monitoring" = true + "name" = var.instance_name + "subnet_id" = "subnet-04ac8df91e75657c9" + "tags" = { + Terraform = "true" + Environment = "dev" + } + "vpc_security_group_ids" = [] + } + + version = "~> 6.0" + + + providers = { + aws = provider.aws.this + } +} + + diff --git a/_stacks_generated/deployment.tfdeploy.hcl b/_stacks_generated/deployment.tfdeploy.hcl new file mode 100755 index 0000000..c98c445 --- /dev/null +++ b/_stacks_generated/deployment.tfdeploy.hcl @@ -0,0 +1,41 @@ +# Generated by tf-migrate 2.0.0-beta1 + + + +# Note on stacks authentication: +# tf-migrate cannot generate stack authentication, this needs to be manually added before execute +# More on authentication - https://developer.hashicorp.com/terraform/language/stacks/deploy/authenticate + +store "varset" "tokens" { + id = "varset-xvfRyT1qNahGfpWm" + category = "env" +} + +deployment "dev-workspace" { + inputs = { + access_key = store.varset.tokens.AWS_ACCESS_KEY_ID + secret_key = store.varset.tokens.AWS_SECRET_ACCESS_KEY + session_token = store.varset.tokens.AWS_SESSION_TOKEN + instance_type = "t3.micro" + ami_id = "ami-0dee22c13ea7a9a67" + instance_name = "stack-v3-test-dev-instance" + } + import = true +} + + + +deployment "prod-workspace" { + inputs = { + access_key = store.varset.tokens.AWS_ACCESS_KEY_ID + secret_key = store.varset.tokens.AWS_SECRET_ACCESS_KEY + session_token = store.varset.tokens.AWS_SESSION_TOKEN + instance_name = "stack-v3-test-prod-instance" + instance_type = "t3.micro" + ami_id = "ami-0dee22c13ea7a9a67" + } + import = true +} + + + diff --git a/_stacks_generated/outputs.tfcomponent.hcl b/_stacks_generated/outputs.tfcomponent.hcl new file mode 100755 index 0000000..07f7503 --- /dev/null +++ b/_stacks_generated/outputs.tfcomponent.hcl @@ -0,0 +1,15 @@ +# Generated by tf-migrate 2.0.0-beta1 + + +output "instance_id" { + description = "The ID of the EC2 instance" + value = component.ec2_instance.id + type = string +} + +output "instance_public_ip" { + description = "The public IP address of the EC2 instance" + value = component.ec2_instance.public_ip + type = string +} + diff --git a/_stacks_generated/providers.tfcomponent.hcl b/_stacks_generated/providers.tfcomponent.hcl new file mode 100755 index 0000000..f1fe711 --- /dev/null +++ b/_stacks_generated/providers.tfcomponent.hcl @@ -0,0 +1,19 @@ +# Generated by tf-migrate 2.0.0-beta1 + + + +provider "aws" "this" { + config { + region = "ap-south-1" + access_key = var.access_key + secret_key = var.secret_key + token = var.session_token + } +} + +required_providers { + aws = { + source = "hashicorp/aws" + version = ">= 4.66.0, >= 5.0.0" + } +} diff --git a/_stacks_generated/variables.tfcomponent.hcl b/_stacks_generated/variables.tfcomponent.hcl new file mode 100755 index 0000000..8230dd1 --- /dev/null +++ b/_stacks_generated/variables.tfcomponent.hcl @@ -0,0 +1,40 @@ +# Generated by tf-migrate 2.0.0-beta1 + + +variable "instance_name" { + description = "Name to be used on all resources as prefix" + type = string + default = "example-instance" +} + +variable "instance_type" { + description = "The type of instance to start" + type = string + default = "t3.micro" +} + +variable "ami_id" { + description = "ID of AMI to use for the instance" + type = string + default = "ami-0dee22c13ea7a9a67" # Amazon Linux 2023 AMI in ap-south-1 (verify this if needed, but using a placeholder/common one is usually okay for templates) +} + +variable "access_key" { + description = "AWS access key" + type = string + ephemeral = true +} + +variable "secret_key" { + description = "AWS sensitive secret key." + type = string + sensitive = true + ephemeral = true +} + +variable "session_token" { + description = "AWS session token." + type = string + sensitive = true + ephemeral = true +} diff --git a/stacks_migration_infra/.terraform.lock.hcl b/stacks_migration_infra/.terraform.lock.hcl new file mode 100644 index 0000000..2795e4f --- /dev/null +++ b/stacks_migration_infra/.terraform.lock.hcl @@ -0,0 +1,42 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/tfe" { + version = "0.72.0" + constraints = ">= 0.67.0" + hashes = [ + "h1:DSx+rdyWBkDyBcollXYzGehREnCvwe5dyNT+gK0S0YQ=", + "zh:0c5a72feab8b911d8ecd618aa875e59693f7ba18d01cac2938693d15d9a3de88", + "zh:2e902f3f26d76f856767c7033de01de94f2128779602eec530ff7b03775ff379", + "zh:4489a949eb07bc606947ae8fedc2e681d12db1ea63915f88698cb2e594fca478", + "zh:541d4532c875b2ee7ecb98da9a1461e76788893b623b0adf7c634d9fff7770e3", + "zh:78db652be0568fafc326e995e3eff153381a0d3abf1ecf96347f1bdf65a2e881", + "zh:89f71cbc5ee52afd5e98bf4603d3f2528bb6272cfb77f0215d9c5ffab3c06d6a", + "zh:a6bd22d4425b425a97cffbb85eddafb9c958ed15d4b95146a0c6da15d97bf098", + "zh:a72507ca718c3040845f14e7f3e72a8fe3fc8b581edcdfc301305e0087b19991", + "zh:a8eb3261495366e739e155d9b65864d88387c409552ccf82e50b9553a3a4ab89", + "zh:aab6de3906be0f112b3ed04179624cd34200b258517f9fad1830af97ac4ef708", + "zh:e194e5d053bd95bbf57dc6ab326850c36ad3938573ba4281b5e465a7ffafb7ab", + "zh:f603f1e884c8a194ea762526f2e462d22599d02fe12cb83ab0c030369be4bd4e", + ] +} + +provider "registry.terraform.io/hashicorp/tfmigrate" { + version = "2.0.0-beta1" + constraints = "2.0.0-beta1" + hashes = [ + "h1:mKHG4z8k+qLDkP+MpPdXu8THvgs2l4/NzxWHBBOR+Zs=", + "zh:1c2433b959b06ed4d1ee77bd41e15c43af6c3eb06a1117b061b152faeb189c0c", + "zh:3ddd5866281772c7c6ed1afbbedbe19646aff7630155b783dc7e553788a5fad0", + "zh:46ee906b17321ba58bcba267acdacf141cec6173d9da16fbe12e4e6299586ea5", + "zh:864d0b62faec50e435e0b410bde3d60e8bede42929ea34f9156ba5545c6f8ebe", + "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", + "zh:8ab21f0c9014493c3d3676e87b90558aee1a50b48235820a5eb5f537b73bb0e0", + "zh:925cacc6649881255a64faef44a30a525762592de8de321cea24d0374e972ac9", + "zh:9e6b69a03b46881c290965187b471f463467e74101c0caa0b2a26c243fa728a7", + "zh:9fee5bf7e51705a4dc5631d38d1642582845673d61285195358ee2349dd194d1", + "zh:c27ae5372c7b96d0eb42ef63c3377be92b89239553a611ea94a3d3656dc65a8c", + "zh:d26605feea4eb31ef7fec832095d449b0249b8e0bf556fab275e5edf6ed38568", + "zh:e28ab6f7754a0ae63844ed336ccffd6390a722a196260bf595b66c931a5a4549", + ] +} diff --git a/stacks_migration_infra/main.tf b/stacks_migration_infra/main.tf new file mode 100644 index 0000000..0e56fc4 --- /dev/null +++ b/stacks_migration_infra/main.tf @@ -0,0 +1,42 @@ +terraform { + required_providers { + tfe = { + source = "hashicorp/tfe" + version = ">= 0.67.0" + } + tfmigrate = { + source = "hashicorp/tfmigrate" + version = "2.0.0-beta1" + } + } +} + +provider "tfe" { + hostname = var.tfe_hostname + organization = var.organization_name +} + +resource "tfe_project" "stack_project" { + name = var.project_name + organization = var.organization_name +} + +resource "tfe_stack" "stack" { + name = var.stack_name + project_id = tfe_project.stack_project.id +} + +resource "tfmigrate_stack_migration" "stack_migration" { + config_file_dir = var.stacks_config_file_dir + organization = var.organization_name + name = tfe_stack.stack.name + project = tfe_project.stack_project.name + terraform_config_dir = var.terraform_config_dir + workspace_deployment_mapping = var.workspace_deployment_mapping +} + +import { + to = tfe_project.stack_project + id = "prj-XzHVjdCZnmdcPEDS" +} + diff --git a/stacks_migration_infra/output.tf b/stacks_migration_infra/output.tf new file mode 100644 index 0000000..079603e --- /dev/null +++ b/stacks_migration_infra/output.tf @@ -0,0 +1,20 @@ +output "project_url" { + value = "https://app.terraform.io/app/${var.organization_name}/projects/${tfe_project.stack_project.id}" +} + +output "stack_url" { + value = "https://app.terraform.io/app/${var.organization_name}/projects/${tfe_project.stack_project.id}/stacks/${tfe_stack.stack.id}" +} + +locals { + stack_deployment_details = ( + tfmigrate_stack_migration.stack_migration.migration_hash != "" ? + provider::tfmigrate::decode_stacks_migration_hash_to_json( + tfmigrate_stack_migration.stack_migration.migration_hash + ) : null + ) +} + +output "stack_deployment_details" { + value = local.stack_deployment_details +} diff --git a/stacks_migration_infra/variables.tf b/stacks_migration_infra/variables.tf new file mode 100644 index 0000000..1571ad0 --- /dev/null +++ b/stacks_migration_infra/variables.tf @@ -0,0 +1,30 @@ +variable "organization_name" { + default = "sujay-test-01" +} + +variable "tfe_hostname" { + default = "app.terraform.io" +} + +variable "project_name" { + default = "Tf-Migrate-Stack-Migration-Retry-Test" +} + +variable "stack_name" { + default = "hello-stacks-v5" +} + +variable "stacks_config_file_dir" { + default = "/Users/sujaysamanta/Workspace/Cursor-AI/terraform-stacks-migration-test/stack-terraform-test-v4/fantastic-octo-computing-machine/_stacks_generated" +} + +variable "terraform_config_dir" { + default = "/Users/sujaysamanta/Workspace/Cursor-AI/terraform-stacks-migration-test/stack-terraform-test-v4/fantastic-octo-computing-machine" +} + +variable "workspace_deployment_mapping" { + default = { + dev-workspace = "dev-workspace" + prod-workspace = "prod-workspace" + } +} From 2f3e1e24875446668d5a04c5f3274e8de9beffc9 Mon Sep 17 00:00:00 2001 From: Sujay Samanta Date: Mon, 12 Jan 2026 08:31:26 +0530 Subject: [PATCH 3/4] Remove generated Terraform files and configurations for stack migration infrastructure --- _stacks_generated/.terraform-version | 1 - _stacks_generated/.terraform.lock.hcl | 26 ------------ _stacks_generated/components.tfcomponent.hcl | 28 ------------- _stacks_generated/deployment.tfdeploy.hcl | 41 ------------------- _stacks_generated/outputs.tfcomponent.hcl | 15 ------- _stacks_generated/providers.tfcomponent.hcl | 19 --------- _stacks_generated/variables.tfcomponent.hcl | 40 ------------------- stacks_migration_infra/.terraform.lock.hcl | 42 -------------------- stacks_migration_infra/main.tf | 42 -------------------- stacks_migration_infra/output.tf | 20 ---------- stacks_migration_infra/variables.tf | 30 -------------- 11 files changed, 304 deletions(-) delete mode 100755 _stacks_generated/.terraform-version delete mode 100755 _stacks_generated/.terraform.lock.hcl delete mode 100755 _stacks_generated/components.tfcomponent.hcl delete mode 100755 _stacks_generated/deployment.tfdeploy.hcl delete mode 100755 _stacks_generated/outputs.tfcomponent.hcl delete mode 100755 _stacks_generated/providers.tfcomponent.hcl delete mode 100755 _stacks_generated/variables.tfcomponent.hcl delete mode 100644 stacks_migration_infra/.terraform.lock.hcl delete mode 100644 stacks_migration_infra/main.tf delete mode 100644 stacks_migration_infra/output.tf delete mode 100644 stacks_migration_infra/variables.tf diff --git a/_stacks_generated/.terraform-version b/_stacks_generated/.terraform-version deleted file mode 100755 index d0e60d6..0000000 --- a/_stacks_generated/.terraform-version +++ /dev/null @@ -1 +0,0 @@ -1.13.5 \ No newline at end of file diff --git a/_stacks_generated/.terraform.lock.hcl b/_stacks_generated/.terraform.lock.hcl deleted file mode 100755 index bb3e5b7..0000000 --- a/_stacks_generated/.terraform.lock.hcl +++ /dev/null @@ -1,26 +0,0 @@ -# This file is maintained automatically by "terraform stacks providers-lock". -# Manual edits may be lost in future updates. - -provider "registry.terraform.io/hashicorp/aws" { - version = "6.27.0" - hashes = [ - "h1:6PyQLswSmmWDFh6G2H4XIeBG8kY0pKAPKLoBarRdfNs=", - "h1:bixp2PSsP5ZGBczGCxcbSDn6lF5QFlUXlNroq9cdab4=", - "h1:emgTfB1LXSFYh9uAwgsRMoMIN5Wz7jNNKq3rqC0EHWk=", - "zh:177a24b806c72e8484b5cabc93b2b38e3d770ae6f745a998b54d6619fd0e8129", - "zh:4ac4a85c14fb868a3306b542e6a56c10bd6c6d5a67bc0c9b8f6a9060cf5f3be7", - "zh:552652185bc85c8ba1da1d65dea47c454728a5c6839c458b6dcd3ce71c19ccfc", - "zh:60284b8172d09aee91eae0856f09855eaf040ce3a58d6933602ae17c53f8ed04", - "zh:6be38d156756ca61fb8e7c752cc5d769cd709686700ac4b230f40a6e95b5dbc9", - "zh:7a409138fae4ef42e3a637e37cb9efedf96459e28a3c764fc4e855e8db9a7485", - "zh:8070cf5224ed1ed3a3e9a59f7c30ff88bf071c7567165275d477c1738a56c064", - "zh:894439ef340a9a79f69cd759e27ad11c7826adeca27be1b1ca82b3c9702fa300", - "zh:89d035eebf08a97c89374ff06040955ddc09f275ecca609d0c9d58d149bef5cf", - "zh:985b1145d724fc1f38369099e4a5087141885740fd6c0b1dbc492171e73c2e49", - "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", - "zh:a80b47ae8d1475201c86bd94a5dcb9dd4da5e8b73102a90820b68b66b76d50fd", - "zh:d3395be1556210f82199b9166a6b2e677cee9c4b67e96e63f6c3a98325ad7ab0", - "zh:db0b869d09657f6f1e4110b56093c5fcdf9dbdd97c020db1e577b239c0adcbce", - "zh:ffc72e680370ae7c21f9bd3082c6317730df805c6797427839a6b6b7e9a26a01", - ] -} diff --git a/_stacks_generated/components.tfcomponent.hcl b/_stacks_generated/components.tfcomponent.hcl deleted file mode 100755 index 6f95134..0000000 --- a/_stacks_generated/components.tfcomponent.hcl +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by tf-migrate 2.0.0-beta1 - - -component "ec2_instance" { - source = "terraform-aws-modules/ec2-instance/aws" - - inputs = { - "ami" = var.ami_id - "instance_type" = var.instance_type - "monitoring" = true - "name" = var.instance_name - "subnet_id" = "subnet-04ac8df91e75657c9" - "tags" = { - Terraform = "true" - Environment = "dev" - } - "vpc_security_group_ids" = [] - } - - version = "~> 6.0" - - - providers = { - aws = provider.aws.this - } -} - - diff --git a/_stacks_generated/deployment.tfdeploy.hcl b/_stacks_generated/deployment.tfdeploy.hcl deleted file mode 100755 index c98c445..0000000 --- a/_stacks_generated/deployment.tfdeploy.hcl +++ /dev/null @@ -1,41 +0,0 @@ -# Generated by tf-migrate 2.0.0-beta1 - - - -# Note on stacks authentication: -# tf-migrate cannot generate stack authentication, this needs to be manually added before execute -# More on authentication - https://developer.hashicorp.com/terraform/language/stacks/deploy/authenticate - -store "varset" "tokens" { - id = "varset-xvfRyT1qNahGfpWm" - category = "env" -} - -deployment "dev-workspace" { - inputs = { - access_key = store.varset.tokens.AWS_ACCESS_KEY_ID - secret_key = store.varset.tokens.AWS_SECRET_ACCESS_KEY - session_token = store.varset.tokens.AWS_SESSION_TOKEN - instance_type = "t3.micro" - ami_id = "ami-0dee22c13ea7a9a67" - instance_name = "stack-v3-test-dev-instance" - } - import = true -} - - - -deployment "prod-workspace" { - inputs = { - access_key = store.varset.tokens.AWS_ACCESS_KEY_ID - secret_key = store.varset.tokens.AWS_SECRET_ACCESS_KEY - session_token = store.varset.tokens.AWS_SESSION_TOKEN - instance_name = "stack-v3-test-prod-instance" - instance_type = "t3.micro" - ami_id = "ami-0dee22c13ea7a9a67" - } - import = true -} - - - diff --git a/_stacks_generated/outputs.tfcomponent.hcl b/_stacks_generated/outputs.tfcomponent.hcl deleted file mode 100755 index 07f7503..0000000 --- a/_stacks_generated/outputs.tfcomponent.hcl +++ /dev/null @@ -1,15 +0,0 @@ -# Generated by tf-migrate 2.0.0-beta1 - - -output "instance_id" { - description = "The ID of the EC2 instance" - value = component.ec2_instance.id - type = string -} - -output "instance_public_ip" { - description = "The public IP address of the EC2 instance" - value = component.ec2_instance.public_ip - type = string -} - diff --git a/_stacks_generated/providers.tfcomponent.hcl b/_stacks_generated/providers.tfcomponent.hcl deleted file mode 100755 index f1fe711..0000000 --- a/_stacks_generated/providers.tfcomponent.hcl +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by tf-migrate 2.0.0-beta1 - - - -provider "aws" "this" { - config { - region = "ap-south-1" - access_key = var.access_key - secret_key = var.secret_key - token = var.session_token - } -} - -required_providers { - aws = { - source = "hashicorp/aws" - version = ">= 4.66.0, >= 5.0.0" - } -} diff --git a/_stacks_generated/variables.tfcomponent.hcl b/_stacks_generated/variables.tfcomponent.hcl deleted file mode 100755 index 8230dd1..0000000 --- a/_stacks_generated/variables.tfcomponent.hcl +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by tf-migrate 2.0.0-beta1 - - -variable "instance_name" { - description = "Name to be used on all resources as prefix" - type = string - default = "example-instance" -} - -variable "instance_type" { - description = "The type of instance to start" - type = string - default = "t3.micro" -} - -variable "ami_id" { - description = "ID of AMI to use for the instance" - type = string - default = "ami-0dee22c13ea7a9a67" # Amazon Linux 2023 AMI in ap-south-1 (verify this if needed, but using a placeholder/common one is usually okay for templates) -} - -variable "access_key" { - description = "AWS access key" - type = string - ephemeral = true -} - -variable "secret_key" { - description = "AWS sensitive secret key." - type = string - sensitive = true - ephemeral = true -} - -variable "session_token" { - description = "AWS session token." - type = string - sensitive = true - ephemeral = true -} diff --git a/stacks_migration_infra/.terraform.lock.hcl b/stacks_migration_infra/.terraform.lock.hcl deleted file mode 100644 index 2795e4f..0000000 --- a/stacks_migration_infra/.terraform.lock.hcl +++ /dev/null @@ -1,42 +0,0 @@ -# This file is maintained automatically by "terraform init". -# Manual edits may be lost in future updates. - -provider "registry.terraform.io/hashicorp/tfe" { - version = "0.72.0" - constraints = ">= 0.67.0" - hashes = [ - "h1:DSx+rdyWBkDyBcollXYzGehREnCvwe5dyNT+gK0S0YQ=", - "zh:0c5a72feab8b911d8ecd618aa875e59693f7ba18d01cac2938693d15d9a3de88", - "zh:2e902f3f26d76f856767c7033de01de94f2128779602eec530ff7b03775ff379", - "zh:4489a949eb07bc606947ae8fedc2e681d12db1ea63915f88698cb2e594fca478", - "zh:541d4532c875b2ee7ecb98da9a1461e76788893b623b0adf7c634d9fff7770e3", - "zh:78db652be0568fafc326e995e3eff153381a0d3abf1ecf96347f1bdf65a2e881", - "zh:89f71cbc5ee52afd5e98bf4603d3f2528bb6272cfb77f0215d9c5ffab3c06d6a", - "zh:a6bd22d4425b425a97cffbb85eddafb9c958ed15d4b95146a0c6da15d97bf098", - "zh:a72507ca718c3040845f14e7f3e72a8fe3fc8b581edcdfc301305e0087b19991", - "zh:a8eb3261495366e739e155d9b65864d88387c409552ccf82e50b9553a3a4ab89", - "zh:aab6de3906be0f112b3ed04179624cd34200b258517f9fad1830af97ac4ef708", - "zh:e194e5d053bd95bbf57dc6ab326850c36ad3938573ba4281b5e465a7ffafb7ab", - "zh:f603f1e884c8a194ea762526f2e462d22599d02fe12cb83ab0c030369be4bd4e", - ] -} - -provider "registry.terraform.io/hashicorp/tfmigrate" { - version = "2.0.0-beta1" - constraints = "2.0.0-beta1" - hashes = [ - "h1:mKHG4z8k+qLDkP+MpPdXu8THvgs2l4/NzxWHBBOR+Zs=", - "zh:1c2433b959b06ed4d1ee77bd41e15c43af6c3eb06a1117b061b152faeb189c0c", - "zh:3ddd5866281772c7c6ed1afbbedbe19646aff7630155b783dc7e553788a5fad0", - "zh:46ee906b17321ba58bcba267acdacf141cec6173d9da16fbe12e4e6299586ea5", - "zh:864d0b62faec50e435e0b410bde3d60e8bede42929ea34f9156ba5545c6f8ebe", - "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", - "zh:8ab21f0c9014493c3d3676e87b90558aee1a50b48235820a5eb5f537b73bb0e0", - "zh:925cacc6649881255a64faef44a30a525762592de8de321cea24d0374e972ac9", - "zh:9e6b69a03b46881c290965187b471f463467e74101c0caa0b2a26c243fa728a7", - "zh:9fee5bf7e51705a4dc5631d38d1642582845673d61285195358ee2349dd194d1", - "zh:c27ae5372c7b96d0eb42ef63c3377be92b89239553a611ea94a3d3656dc65a8c", - "zh:d26605feea4eb31ef7fec832095d449b0249b8e0bf556fab275e5edf6ed38568", - "zh:e28ab6f7754a0ae63844ed336ccffd6390a722a196260bf595b66c931a5a4549", - ] -} diff --git a/stacks_migration_infra/main.tf b/stacks_migration_infra/main.tf deleted file mode 100644 index 0e56fc4..0000000 --- a/stacks_migration_infra/main.tf +++ /dev/null @@ -1,42 +0,0 @@ -terraform { - required_providers { - tfe = { - source = "hashicorp/tfe" - version = ">= 0.67.0" - } - tfmigrate = { - source = "hashicorp/tfmigrate" - version = "2.0.0-beta1" - } - } -} - -provider "tfe" { - hostname = var.tfe_hostname - organization = var.organization_name -} - -resource "tfe_project" "stack_project" { - name = var.project_name - organization = var.organization_name -} - -resource "tfe_stack" "stack" { - name = var.stack_name - project_id = tfe_project.stack_project.id -} - -resource "tfmigrate_stack_migration" "stack_migration" { - config_file_dir = var.stacks_config_file_dir - organization = var.organization_name - name = tfe_stack.stack.name - project = tfe_project.stack_project.name - terraform_config_dir = var.terraform_config_dir - workspace_deployment_mapping = var.workspace_deployment_mapping -} - -import { - to = tfe_project.stack_project - id = "prj-XzHVjdCZnmdcPEDS" -} - diff --git a/stacks_migration_infra/output.tf b/stacks_migration_infra/output.tf deleted file mode 100644 index 079603e..0000000 --- a/stacks_migration_infra/output.tf +++ /dev/null @@ -1,20 +0,0 @@ -output "project_url" { - value = "https://app.terraform.io/app/${var.organization_name}/projects/${tfe_project.stack_project.id}" -} - -output "stack_url" { - value = "https://app.terraform.io/app/${var.organization_name}/projects/${tfe_project.stack_project.id}/stacks/${tfe_stack.stack.id}" -} - -locals { - stack_deployment_details = ( - tfmigrate_stack_migration.stack_migration.migration_hash != "" ? - provider::tfmigrate::decode_stacks_migration_hash_to_json( - tfmigrate_stack_migration.stack_migration.migration_hash - ) : null - ) -} - -output "stack_deployment_details" { - value = local.stack_deployment_details -} diff --git a/stacks_migration_infra/variables.tf b/stacks_migration_infra/variables.tf deleted file mode 100644 index 1571ad0..0000000 --- a/stacks_migration_infra/variables.tf +++ /dev/null @@ -1,30 +0,0 @@ -variable "organization_name" { - default = "sujay-test-01" -} - -variable "tfe_hostname" { - default = "app.terraform.io" -} - -variable "project_name" { - default = "Tf-Migrate-Stack-Migration-Retry-Test" -} - -variable "stack_name" { - default = "hello-stacks-v5" -} - -variable "stacks_config_file_dir" { - default = "/Users/sujaysamanta/Workspace/Cursor-AI/terraform-stacks-migration-test/stack-terraform-test-v4/fantastic-octo-computing-machine/_stacks_generated" -} - -variable "terraform_config_dir" { - default = "/Users/sujaysamanta/Workspace/Cursor-AI/terraform-stacks-migration-test/stack-terraform-test-v4/fantastic-octo-computing-machine" -} - -variable "workspace_deployment_mapping" { - default = { - dev-workspace = "dev-workspace" - prod-workspace = "prod-workspace" - } -} From 667d492b6db19c767b8c2038e29f93880dbc489f Mon Sep 17 00:00:00 2001 From: Sujay Samanta Date: Mon, 12 Jan 2026 08:49:02 +0530 Subject: [PATCH 4/4] Add Terraform configuration files for stack migration and AWS resources --- _stacks_generated/.terraform-version | 1 + _stacks_generated/.terraform.lock.hcl | 26 ++++++++++++ _stacks_generated/components.tfcomponent.hcl | 28 +++++++++++++ _stacks_generated/deployment.tfdeploy.hcl | 41 +++++++++++++++++++ _stacks_generated/outputs.tfcomponent.hcl | 15 +++++++ _stacks_generated/providers.tfcomponent.hcl | 19 +++++++++ _stacks_generated/variables.tfcomponent.hcl | 41 +++++++++++++++++++ stacks_migration_infra/.terraform.lock.hcl | 42 ++++++++++++++++++++ stacks_migration_infra/main.tf | 37 +++++++++++++++++ stacks_migration_infra/output.tf | 7 ++++ stacks_migration_infra/variables.tf | 30 ++++++++++++++ 11 files changed, 287 insertions(+) create mode 100755 _stacks_generated/.terraform-version create mode 100755 _stacks_generated/.terraform.lock.hcl create mode 100755 _stacks_generated/components.tfcomponent.hcl create mode 100755 _stacks_generated/deployment.tfdeploy.hcl create mode 100755 _stacks_generated/outputs.tfcomponent.hcl create mode 100755 _stacks_generated/providers.tfcomponent.hcl create mode 100755 _stacks_generated/variables.tfcomponent.hcl create mode 100644 stacks_migration_infra/.terraform.lock.hcl create mode 100644 stacks_migration_infra/main.tf create mode 100644 stacks_migration_infra/output.tf create mode 100644 stacks_migration_infra/variables.tf diff --git a/_stacks_generated/.terraform-version b/_stacks_generated/.terraform-version new file mode 100755 index 0000000..d0e60d6 --- /dev/null +++ b/_stacks_generated/.terraform-version @@ -0,0 +1 @@ +1.13.5 \ No newline at end of file diff --git a/_stacks_generated/.terraform.lock.hcl b/_stacks_generated/.terraform.lock.hcl new file mode 100755 index 0000000..7df6d71 --- /dev/null +++ b/_stacks_generated/.terraform.lock.hcl @@ -0,0 +1,26 @@ +# This file is maintained automatically by "terraform stacks providers-lock". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/aws" { + version = "6.28.0" + hashes = [ + "h1:2bDndcCvti7hgXw4MkMo37cyAAu1gk+JvsU9/UbRJNQ=", + "h1:RwoFuX1yGMVaKJaUmXDKklEaQ/yUCEdt5k2kz+/g08c=", + "h1:wzZdGs0FFmNqIgPyo9tKnGKJ37BGNSgwRrEXayL29+0=", + "zh:0ba0d5eb6e0c6a933eb2befe3cdbf22b58fbc0337bf138f95bf0e8bb6e6df93e", + "zh:23eacdd4e6db32cf0ff2ce189461bdbb62e46513978d33c5de4decc4670870ec", + "zh:307b06a15fc00a8e6fd243abde2cbe5112e9d40371542665b91bec1018dd6e3c", + "zh:37a02d5b45a9d050b9642c9e2e268297254192280df72f6e46641daca52e40ec", + "zh:3da866639f07d92e734557d673092719c33ede80f4276c835bf7f231a669aa33", + "zh:480060b0ba310d0f6b6a14d60b276698cb103c48fd2f7e2802ae47c963995ec6", + "zh:57796453455c20db80d9168edbf125bf6180e1aae869de1546a2be58e4e405ec", + "zh:69139cba772d4df8de87598d8d8a2b1b4b254866db046c061dccc79edb14e6b9", + "zh:7312763259b859ff911c5452ca8bdf7d0be6231c5ea0de2df8f09d51770900ac", + "zh:8d2d6f4015d3c155d7eb53e36f019a729aefb46ebfe13f3a637327d3a1402ecc", + "zh:94ce589275c77308e6253f607de96919b840c2dd36c44aa798f693c9dd81af42", + "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", + "zh:adaceec6a1bf4f5df1e12bd72cf52b72087c72efed078aef636f8988325b1a8b", + "zh:d37be1ce187d94fd9df7b13a717c219964cd835c946243f096c6b230cdfd7e92", + "zh:fe6205b5ca2ff36e68395cb8d3ae10a3728f405cdbcd46b206a515e1ebcf17a1", + ] +} diff --git a/_stacks_generated/components.tfcomponent.hcl b/_stacks_generated/components.tfcomponent.hcl new file mode 100755 index 0000000..6f95134 --- /dev/null +++ b/_stacks_generated/components.tfcomponent.hcl @@ -0,0 +1,28 @@ +# Generated by tf-migrate 2.0.0-beta1 + + +component "ec2_instance" { + source = "terraform-aws-modules/ec2-instance/aws" + + inputs = { + "ami" = var.ami_id + "instance_type" = var.instance_type + "monitoring" = true + "name" = var.instance_name + "subnet_id" = "subnet-04ac8df91e75657c9" + "tags" = { + Terraform = "true" + Environment = "dev" + } + "vpc_security_group_ids" = [] + } + + version = "~> 6.0" + + + providers = { + aws = provider.aws.this + } +} + + diff --git a/_stacks_generated/deployment.tfdeploy.hcl b/_stacks_generated/deployment.tfdeploy.hcl new file mode 100755 index 0000000..22e104a --- /dev/null +++ b/_stacks_generated/deployment.tfdeploy.hcl @@ -0,0 +1,41 @@ +# Generated by tf-migrate 2.0.0-beta1 + + + +# Note on stacks authentication: +# tf-migrate cannot generate stack authentication, this needs to be manually added before execute +# More on authentication - https://developer.hashicorp.com/terraform/language/stacks/deploy/authenticate + +store "varset" "tokens" { + id = "varset-xvfRyT1qNahGfpWm" + category = "env" +} + +deployment "dev-workspace" { + inputs = { + access_key = store.varset.tokens.AWS_ACCESS_KEY_ID + secret_key = store.varset.tokens.AWS_SECRET_ACCESS_KEY + session_token = store.varset.tokens.AWS_SESSION_TOKEN + instance_name = "stack-v3-test-dev-instance" + instance_type = "t3.micro" + ami_id = "ami-0dee22c13ea7a9a67" + } + import = true +} + + + +deployment "prod-workspace" { + inputs = { + access_key = store.varset.tokens.AWS_ACCESS_KEY_ID + secret_key = store.varset.tokens.AWS_SECRET_ACCESS_KEY + session_token = store.varset.tokens.AWS_SESSION_TOKEN + ami_id = "ami-0dee22c13ea7a9a67" + instance_name = "stack-v3-test-prod-instance" + instance_type = "t3.micro" + } + import = true +} + + + diff --git a/_stacks_generated/outputs.tfcomponent.hcl b/_stacks_generated/outputs.tfcomponent.hcl new file mode 100755 index 0000000..07f7503 --- /dev/null +++ b/_stacks_generated/outputs.tfcomponent.hcl @@ -0,0 +1,15 @@ +# Generated by tf-migrate 2.0.0-beta1 + + +output "instance_id" { + description = "The ID of the EC2 instance" + value = component.ec2_instance.id + type = string +} + +output "instance_public_ip" { + description = "The public IP address of the EC2 instance" + value = component.ec2_instance.public_ip + type = string +} + diff --git a/_stacks_generated/providers.tfcomponent.hcl b/_stacks_generated/providers.tfcomponent.hcl new file mode 100755 index 0000000..02e1afc --- /dev/null +++ b/_stacks_generated/providers.tfcomponent.hcl @@ -0,0 +1,19 @@ +# Generated by tf-migrate 2.0.0-beta1 + + + +provider "aws" "this" { + config { + region = "ap-south-1" + access_key = var.access_key + secret_key = var.secret_key + token = var.session_token + } +} + +required_providers { + aws = { + source = "hashicorp/aws" + version = ">= 4.66.0, >= 5.0.0" + } +} diff --git a/_stacks_generated/variables.tfcomponent.hcl b/_stacks_generated/variables.tfcomponent.hcl new file mode 100755 index 0000000..0a3f4f2 --- /dev/null +++ b/_stacks_generated/variables.tfcomponent.hcl @@ -0,0 +1,41 @@ +# Generated by tf-migrate 2.0.0-beta1 + + +variable "instance_name" { + description = "Name to be used on all resources as prefix" + type = string + default = "example-instance" +} + +variable "instance_type" { + description = "The type of instance to start" + type = string + default = "t3.micro" +} + +variable "ami_id" { + description = "ID of AMI to use for the instance" + type = string + default = "ami-0dee22c13ea7a9a67" # Amazon Linux 2023 AMI in ap-south-1 (verify this if needed, but using a placeholder/common one is usually okay for templates) +} + +variable "access_key" { + description = "AWS access key" + type = string + ephemeral = true +} + +variable "secret_key" { + description = "AWS sensitive secret key." + type = string + sensitive = true + ephemeral = true +} + +variable "session_token" { + description = "AWS session token." + type = string + sensitive = true + ephemeral = true +} + diff --git a/stacks_migration_infra/.terraform.lock.hcl b/stacks_migration_infra/.terraform.lock.hcl new file mode 100644 index 0000000..f1de7f9 --- /dev/null +++ b/stacks_migration_infra/.terraform.lock.hcl @@ -0,0 +1,42 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/tfe" { + version = "0.73.0" + constraints = ">= 0.73.0" + hashes = [ + "h1:ZNeSgNWA/SdS9sBIEeg6w3eQtcHlORZRpdk8Ie3R7Ag=", + "zh:063efb04537080f009e3cc4f2402c7d6c583b51ed29af5b1e7575af677e0643b", + "zh:284ca57835ebdaa2c8aad5881ab0712603c3ccc1654fdb43138e207e3f6272d6", + "zh:3f5283dfa57c54ae4503c4aca32b28a8ca403bf18823f09723f64966fc4d2757", + "zh:541d4532c875b2ee7ecb98da9a1461e76788893b623b0adf7c634d9fff7770e3", + "zh:59c8deae55405f4043b2c17e12b9e218d71340c1e7640c0d479b667f5b6e698f", + "zh:8c948e6d3488f4aa8dd0df2469a6710972104523e01862665c0350a423215bef", + "zh:90fff7cf1d901126ca02de60467f79e2c727d33c9f412a2b7c7125ab38643675", + "zh:97fe934fad86781509dced436c991c2eb4f6be0f236424b2b4970d1f323878cf", + "zh:a512cd517dcbc2ace10799fd81b274c913a267c8d0d8055fa2261c9aaee088af", + "zh:b051d92e8cff8e2e1edf7e82319bdb6f805683353bc2f1bc59d84184e0f4880d", + "zh:c2c5042185f5dab8dc7841b1d9e165945f78cbed137d802e46cae1ad0c7b8f9d", + "zh:d170428b6e174b48a5b4abd0750c55570c2f4607433d799c18defbfe3ddd6281", + ] +} + +provider "registry.terraform.io/hashicorp/tfmigrate" { + version = "2.0.0-beta1" + constraints = "2.0.0-beta1" + hashes = [ + "h1:mKHG4z8k+qLDkP+MpPdXu8THvgs2l4/NzxWHBBOR+Zs=", + "zh:1c2433b959b06ed4d1ee77bd41e15c43af6c3eb06a1117b061b152faeb189c0c", + "zh:3ddd5866281772c7c6ed1afbbedbe19646aff7630155b783dc7e553788a5fad0", + "zh:46ee906b17321ba58bcba267acdacf141cec6173d9da16fbe12e4e6299586ea5", + "zh:864d0b62faec50e435e0b410bde3d60e8bede42929ea34f9156ba5545c6f8ebe", + "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", + "zh:8ab21f0c9014493c3d3676e87b90558aee1a50b48235820a5eb5f537b73bb0e0", + "zh:925cacc6649881255a64faef44a30a525762592de8de321cea24d0374e972ac9", + "zh:9e6b69a03b46881c290965187b471f463467e74101c0caa0b2a26c243fa728a7", + "zh:9fee5bf7e51705a4dc5631d38d1642582845673d61285195358ee2349dd194d1", + "zh:c27ae5372c7b96d0eb42ef63c3377be92b89239553a611ea94a3d3656dc65a8c", + "zh:d26605feea4eb31ef7fec832095d449b0249b8e0bf556fab275e5edf6ed38568", + "zh:e28ab6f7754a0ae63844ed336ccffd6390a722a196260bf595b66c931a5a4549", + ] +} diff --git a/stacks_migration_infra/main.tf b/stacks_migration_infra/main.tf new file mode 100644 index 0000000..10c4b69 --- /dev/null +++ b/stacks_migration_infra/main.tf @@ -0,0 +1,37 @@ +terraform { + required_providers { + tfe = { + source = "hashicorp/tfe" + version = ">= 0.73.0" + } + tfmigrate = { + source = "hashicorp/tfmigrate" + version = "2.0.0-beta1" + } + } +} + +provider "tfe" { + hostname = var.tfe_hostname + organization = var.organization_name +} + +resource "tfe_project" "stack_project" { + name = var.project_name + organization = var.organization_name +} + +resource "tfe_stack" "stack" { + name = var.stack_name + project_id = tfe_project.stack_project.id + migration = true # Identifies the stack is created for migration purposes +} + +resource "tfmigrate_stack_migration" "stack_migration" { + config_file_dir = var.stacks_config_file_dir + organization = var.organization_name + name = tfe_stack.stack.name + project = tfe_project.stack_project.name + terraform_config_dir = var.terraform_config_dir + workspace_deployment_mapping = var.workspace_deployment_mapping +} diff --git a/stacks_migration_infra/output.tf b/stacks_migration_infra/output.tf new file mode 100644 index 0000000..e0f6f15 --- /dev/null +++ b/stacks_migration_infra/output.tf @@ -0,0 +1,7 @@ +output "project_url" { + value = "https://app.terraform.io/app/${var.organization_name}/projects/${tfe_project.stack_project.id}" +} + +output "stack_url" { + value = "https://app.terraform.io/app/${var.organization_name}/projects/${tfe_project.stack_project.id}/stacks/${tfe_stack.stack.id}" +} \ No newline at end of file diff --git a/stacks_migration_infra/variables.tf b/stacks_migration_infra/variables.tf new file mode 100644 index 0000000..e693c36 --- /dev/null +++ b/stacks_migration_infra/variables.tf @@ -0,0 +1,30 @@ +variable "organization_name" { + default = "sujay-test-01" +} + +variable "tfe_hostname" { + default = "app.terraform.io" +} + +variable "project_name" { + default = "stack-with-source" +} + +variable "stack_name" { + default = "stack-with-migration-source-v1" +} + +variable "stacks_config_file_dir" { + default = "/Users/sujaysamanta/Workspace/Cursor-AI/terraform-stacks-migration-test/stack-terraform-test-v4/fantastic-octo-computing-machine/_stacks_generated" +} + +variable "terraform_config_dir" { + default = "/Users/sujaysamanta/Workspace/Cursor-AI/terraform-stacks-migration-test/stack-terraform-test-v4/fantastic-octo-computing-machine" +} + +variable "workspace_deployment_mapping" { + default = { + dev-workspace = "dev-workspace" + prod-workspace = "prod-workspace" + } +}