From 0d6b8247459e25eca53422bdc1edcd87b3c391a2 Mon Sep 17 00:00:00 2001 From: Sujay Samanta Date: Fri, 23 Jan 2026 12:12:39 +0530 Subject: [PATCH 1/2] Update Terraform AWS provider version and constraints in .terraform.lock.hcl --- .terraform.lock.hcl | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.terraform.lock.hcl b/.terraform.lock.hcl index cc4cba1..5ec8ec2 100644 --- a/.terraform.lock.hcl +++ b/.terraform.lock.hcl @@ -2,24 +2,24 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/aws" { - version = "6.24.0" - constraints = ">= 4.66.0, >= 5.0.0" + version = "6.28.0" + constraints = ">= 5.0.0, >= 6.28.0" hashes = [ - "h1:6ecNJGd2Gldgfo7GamHRgVzIWHiYKh+ke4vnhiSSh40=", - "zh:11283019ffc77cbd445447c74d3b741a155bbaa69162f971cceb394cf4219f4b", - "zh:1a561c907cd87a732ee2d84a2178f02af410d49dad8f96901eff61e1b395417d", - "zh:31a3337edad9e50b0daef42b67b2ea0b43becafdf74b569b270ac15dc1eab2c4", - "zh:3707d429a12bb10831ff3d9d3dc8557bc0c73322ccd2550b71a1711c5b897c22", - "zh:71364f96d7cd6c07a22e4a1920f45e3b2c9a9cd4e3992ce32b34cfeebde62f17", - "zh:891537027210d2c8af6336d7776674b06e0d2912d84288a3413aad363fc90a77", - "zh:99154ea404bd6949afdadbc2a46dfdac75bf94d23cb6287d2ae6da9965ec066a", - "zh:9a520955e8b3d735c717e730ddeee2d2b27ac276f140ea805b49b9ef79a34829", + "h1:RwoFuX1yGMVaKJaUmXDKklEaQ/yUCEdt5k2kz+/g08c=", + "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:a172bf1f69f798510d7980d4ce7cdfa8d7ee301b4c254e587554133aa1b5f730", - "zh:b3496079295b5f41b31e24c8292fe8d685fd21b941927eb654c2e6df3b4d24dd", - "zh:b8840f86f001cd64d2d0a2a808062e5c3ba21ebda8387aab39a375c3d618c2e7", - "zh:c81f33659a2a66095a6066bddc0bdef52b5d65b54670e03bae7e1dbea1d47640", - "zh:cb23eca22acadcee9bf0def6f4d6ead6e04ed564eb8e3d311116545fb6d34401", - "zh:ced4f3e74156669f074e30b2c9afa48a3e4062fcafe1d9da1c4db4b569bf82b7", + "zh:adaceec6a1bf4f5df1e12bd72cf52b72087c72efed078aef636f8988325b1a8b", + "zh:d37be1ce187d94fd9df7b13a717c219964cd835c946243f096c6b230cdfd7e92", + "zh:fe6205b5ca2ff36e68395cb8d3ae10a3728f405cdbcd46b206a515e1ebcf17a1", ] } From e3ae365efcea46e9465d91a8e7f5197d92794085 Mon Sep 17 00:00:00 2001 From: Sujay Samanta Date: Fri, 23 Jan 2026 13:05:39 +0530 Subject: [PATCH 2/2] Add Terraform configuration files for stack migration and AWS provider setup --- _stacks_generated/.terraform-version | 1 + _stacks_generated/.terraform.lock.hcl | 26 ++++++++++++ _stacks_generated/components.tfcomponent.hcl | 28 +++++++++++++ _stacks_generated/deployment.tfdeploy.hcl | 43 +++++++++++++++++++ _stacks_generated/outputs.tfcomponent.hcl | 15 +++++++ _stacks_generated/providers.tfcomponent.hcl | 19 +++++++++ _stacks_generated/variables.tfcomponent.hcl | 44 ++++++++++++++++++++ stack-migrate-config.hcl | 14 +++++++ 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 +++++++++++++ 12 files changed, 306 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 100755 stack-migrate-config.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..ee63dd1 --- /dev/null +++ b/_stacks_generated/deployment.tfdeploy.hcl @@ -0,0 +1,43 @@ +# Generated by tf-migrate 2.0.0-beta1 + + + +# Note on AWS provider authentication: +# tf-migrate has identified the usage of AWS provider in your configuration. +# Templated varset store block for AWS tokens has been added in deployments. +# Please replace the placeholder varset ID with the actual varset ID that contains your AWS credentials before executing stacks. +# More on varset based authentication - https://developer.hashicorp.com/terraform/language/stacks/deploy/authenticate#authenticate-with-a-variable-set + +store "varset" "tokens" { + id = "varset-xvfRyT1qNahGfpWm" # Replace with actual varset ID containing AWS credentials + category = "env" +} + +deployment "dev-workspace-deployment" { + inputs = { + instance_type = "t3.micro" + ami_id = "ami-0dee22c13ea7a9a67" + instance_name = "stack-v3-test-dev-instance" + 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 + } + import = true +} + + + +deployment "prod-workspace-deployment" { + inputs = { + instance_name = "stack-v3-test-prod-instance" + instance_type = "t3.micro" + ami_id = "ami-0dee22c13ea7a9a67" + 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 + } + 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..a5c8f3e --- /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 = ">= 5.0.0, >= 6.28.0" + } +} diff --git a/_stacks_generated/variables.tfcomponent.hcl b/_stacks_generated/variables.tfcomponent.hcl new file mode 100755 index 0000000..3edda25 --- /dev/null +++ b/_stacks_generated/variables.tfcomponent.hcl @@ -0,0 +1,44 @@ +# 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) +} + +// set of AWS credentials as ephemeral variables +// BEGIN +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 +} +// END + diff --git a/stack-migrate-config.hcl b/stack-migrate-config.hcl new file mode 100755 index 0000000..b925df5 --- /dev/null +++ b/stack-migrate-config.hcl @@ -0,0 +1,14 @@ +organization_name = "sujay-test-01" +stack_project_name = "config-file-default-test-project" +stack_name = "config-file-default-test" +workspace_config = { + "dev-workspace" = { + deployment_name = "dev-workspace-deployment" + tf_vars_file = ["terraform.tfvars"] + } + + "prod-workspace" = { + deployment_name = "prod-workspace-deployment" + tf_vars_file = ["vcs.auto.tfvars"] + } +} diff --git a/stacks_migration_infra/.terraform.lock.hcl b/stacks_migration_infra/.terraform.lock.hcl new file mode 100644 index 0000000..e29594a --- /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-rc1" + constraints = "2.0.0-rc1" + hashes = [ + "h1:bv9pLNXxIT48sYBVFcl8FEWwIHm1nWAOnV7Gpx0VKic=", + "zh:06380d2ceb8f86c4a7c6ccaa76065a6450e99756aaf34ff1fdcd01698738f9c5", + "zh:12243c97d217c87a72d37dbb24ada221b66346bcde7a29a87f5ccca3e5ab5345", + "zh:259329948d6d12aef51d58cc3732e7244451e89c80e2d16e64012b48a4bd58b5", + "zh:2956feafffdd37ddb9490561625f5104f9d95756a8f6ea65e17243c992b8acf2", + "zh:3d333fa340592d435920b89e2e93583e0074997d26accb4714758d04da060750", + "zh:56df4c97925deaa7bbc605ecf614571936a388e80e69dd7a913070b098253d9d", + "zh:59598c020dc2670ed1f5b716eb45138feb9013680a8e669925e4d287893dd743", + "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", + "zh:ae59574752b6d6d3f9e3c2c569f78d03d74a1ec05cb8d0245bcad3c991097df4", + "zh:c6521e74fc758003272ce560876132cac04b43df2a37894f68fa1e3871822faa", + "zh:ce61c2882b1ade364f460b7806e247cb6d8c53634c72a956b1a8e3d38f8c9d65", + "zh:fcd5b5ad65d560d5055984ccf898545f568137c597bed34b701083fada4c4203", + ] +} diff --git a/stacks_migration_infra/main.tf b/stacks_migration_infra/main.tf new file mode 100644 index 0000000..44d94a5 --- /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-rc1" + } + } +} + +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..c9e6721 --- /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 = "config-file-default-test-project" +} + +variable "stack_name" { + default = "config-file-default-test" +} + +variable "stacks_config_file_dir" { + default = "/Users/sujaysamanta/test-new-provider-release/fantastic-octo-computing-machine/_stacks_generated" +} + +variable "terraform_config_dir" { + default = "/Users/sujaysamanta/test-new-provider-release/fantastic-octo-computing-machine" +} + +variable "workspace_deployment_mapping" { + default = { + dev-workspace = "dev-workspace-deployment" + prod-workspace = "prod-workspace-deployment" + } +}