Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,9 @@ override.tf.json
# Ignore CLI configuration files
.terraformrc
terraform.rc
!vcs.auto.tfvars
!vcs.auto.tfvars
!terraform.tfvars
!modularized_config/_stacks_generated/.terraform.lock.hcl
!modularized_config/stacks_migration_infra/.terraform.lock.hcl
!modularized_config/stacks_migration_infra/terraform.tfstate
!modularized_config/.terraform.lock.hcl
1 change: 1 addition & 0 deletions .terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 15 additions & 2 deletions main.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

terraform {
required_version = ">= 1.0"
required_providers {
Expand All @@ -6,13 +7,22 @@ terraform {
version = "~> 5.0"
}
}

cloud {
organization = "sujay-test-01"
workspaces {
name = "cli-driven-test-workspace-1"
}
}
}


# Configure the AWS Provider
provider "aws" {
region = "us-east-1"
region = "ap-south-1"
}


# Create S3 bucket
resource "aws_s3_bucket" "main" {
bucket = var.bucket_name
Expand All @@ -26,6 +36,7 @@ resource "aws_s3_bucket" "main" {
)
}


# Configure S3 bucket versioning
resource "aws_s3_bucket_versioning" "main" {
bucket = aws_s3_bucket.main.id
Expand All @@ -34,6 +45,7 @@ resource "aws_s3_bucket_versioning" "main" {
}
}


# Configure S3 bucket server-side encryption
resource "aws_s3_bucket_server_side_encryption_configuration" "main" {
bucket = aws_s3_bucket.main.id
Expand All @@ -45,6 +57,7 @@ resource "aws_s3_bucket_server_side_encryption_configuration" "main" {
}
}


# Block public access to the S3 bucket
resource "aws_s3_bucket_public_access_block" "main" {
bucket = aws_s3_bucket.main.id
Expand All @@ -53,4 +66,4 @@ resource "aws_s3_bucket_public_access_block" "main" {
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
}
25 changes: 25 additions & 0 deletions modularized_config/.terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions modularized_config/_stacks_generated/.terraform-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.13.2
26 changes: 26 additions & 0 deletions modularized_config/_stacks_generated/.terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions modularized_config/_stacks_generated/components.tfcomponent.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by tf-migrate 1.3.0

component "terraform_module" {
source = "./terraform_modules"

inputs = {
"bucket_name" = var.bucket_name
"environment" = var.environment
"tags" = var.tags
}


providers = {
aws = provider.aws.this
}
}


30 changes: 30 additions & 0 deletions modularized_config/_stacks_generated/deployment.tfdeploy.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Generated by tf-migrate 1.3.0


# 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 "cli-driven-test-workspace-1" {
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
tags = {
Owner = "terraform-test-lab"
Project = "cli-driven-test-workspace-1"
}
bucket_name = "my-unique-bucket-name-12345-sujay-test-cli"
environment = "dev"
}
import = true
}



14 changes: 14 additions & 0 deletions modularized_config/_stacks_generated/outputs.tfcomponent.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Generated by tf-migrate 1.3.0

output "bucket_name" {
description = "Name of the created S3 bucket"
value = component.terraform_module.bucket_name
type = string
}

output "bucket_arn" {
description = "ARN of the created S3 bucket"
value = component.terraform_module.bucket_arn
type = string
}

18 changes: 18 additions & 0 deletions modularized_config/_stacks_generated/providers.tfcomponent.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by tf-migrate 1.3.0

required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.7.0"
}
}

provider "aws" "this" {
config {
region = "ap-south-1"
access_key = var.access_key
secret_key = var.secret_key
token = var.session_token
}
}

71 changes: 71 additions & 0 deletions modularized_config/_stacks_generated/terraform_modules/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@

terraform {
required_version = ">= 1.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}

cloud {
organization = "sujay-test-01"
workspaces {
name = "cli-driven-test-workspace-1"
}
}
}


# Configure the AWS Provider
/* commented by tf-migrate, ref - https://developer.hashicorp.com/terraform/language/stacks/create/declare-providers
provider "aws" {
region = "ap-south-1"
}
*/


# Create S3 bucket
resource "aws_s3_bucket" "main" {
bucket = var.bucket_name

tags = merge(
var.tags,
{
Environment = var.environment
ManagedBy = "Terraform"
}
)
}


# Configure S3 bucket versioning
resource "aws_s3_bucket_versioning" "main" {
bucket = aws_s3_bucket.main.id
versioning_configuration {
status = "Enabled"
}
}


# Configure S3 bucket server-side encryption
resource "aws_s3_bucket_server_side_encryption_configuration" "main" {
bucket = aws_s3_bucket.main.id

rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}


# Block public access to the S3 bucket
resource "aws_s3_bucket_public_access_block" "main" {
bucket = aws_s3_bucket.main.id

block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
output "bucket_name" {
description = "Name of the created S3 bucket"
value = aws_s3_bucket.main.bucket
}

output "bucket_arn" {
description = "ARN of the created S3 bucket"
value = aws_s3_bucket.main.arn
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
variable "bucket_name" {
description = "Name of the S3 bucket"
type = string
}

variable "environment" {
description = "Environment name (e.g., dev, staging, prod)"
type = string
default = "dev"
}

variable "tags" {
description = "Additional tags to apply to the S3 bucket"
type = map(string)
default = {}
}
38 changes: 38 additions & 0 deletions modularized_config/_stacks_generated/variables.tfcomponent.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Generated by tf-migrate 1.3.0

variable "environment" {
description = "Environment name (e.g., dev, staging, prod)"
type = string
default = "dev"
}

variable "tags" {
description = "Additional tags to apply to the S3 bucket"
type = map(string)
default = {}
}

variable "bucket_name" {
description = "Name of the S3 bucket"
type = string
}

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
}
28 changes: 28 additions & 0 deletions modularized_config/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
terraform {
required_version = ">= 1.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}

cloud {
organization = "sujay-test-01"
workspaces {
name = "cli-driven-test-workspace-1"
}
}
}

# Configure the AWS Provider
provider "aws" {
region = "ap-south-1"
}

module "terraform_module" {
source = "./terraform_modules"
environment = var.environment
tags = var.tags
bucket_name = var.bucket_name
}
Loading