From c52eef5d721b7570cc51263ff77568eb51f16b61 Mon Sep 17 00:00:00 2001 From: deepanshu-ops0 Date: Tue, 12 Aug 2025 22:58:40 +0530 Subject: [PATCH] IaC changes --- .../backend.tf | 8 ++ 5d1a38e8-e15a-450e-903c-562255e51faf/main.tf | 85 +++++++++++++++++++ .../variables.tf | 24 ++++++ 3 files changed, 117 insertions(+) create mode 100644 5d1a38e8-e15a-450e-903c-562255e51faf/backend.tf create mode 100644 5d1a38e8-e15a-450e-903c-562255e51faf/main.tf create mode 100644 5d1a38e8-e15a-450e-903c-562255e51faf/variables.tf diff --git a/5d1a38e8-e15a-450e-903c-562255e51faf/backend.tf b/5d1a38e8-e15a-450e-903c-562255e51faf/backend.tf new file mode 100644 index 0000000..c06155e --- /dev/null +++ b/5d1a38e8-e15a-450e-903c-562255e51faf/backend.tf @@ -0,0 +1,8 @@ +terraform { + backend "s3" { + bucket = "opszero-b63fbc68-f984-455e-8e8f-b9ac4fb3e1e5" + key = "b63fbc68-f984-455e-8e8f-b9ac4fb3e1e5/5d1a38e8-e15a-450e-903c-562255e51faf/terraform.tfstate" + region = "us-east-1" + encrypt = true + } +} \ No newline at end of file diff --git a/5d1a38e8-e15a-450e-903c-562255e51faf/main.tf b/5d1a38e8-e15a-450e-903c-562255e51faf/main.tf new file mode 100644 index 0000000..3dff743 --- /dev/null +++ b/5d1a38e8-e15a-450e-903c-562255e51faf/main.tf @@ -0,0 +1,85 @@ +provider "aws" { + region = var.region +} + +resource "aws_s3_bucket" "website" { + bucket = var.bucket_name + force_destroy = true + + tags = var.tags +} + +resource "aws_s3_bucket_website_configuration" "website" { + bucket = aws_s3_bucket.website.id + + index_document { + suffix = "index.html" + } + + error_document { + key = "error.html" + } +} + +resource "aws_s3_bucket_ownership_controls" "website" { + bucket = aws_s3_bucket.website.id + + rule { + object_ownership = "BucketOwnerPreferred" + } +} + +resource "aws_s3_bucket_public_access_block" "website" { + bucket = aws_s3_bucket.website.id + + block_public_acls = false + block_public_policy = false + ignore_public_acls = false + restrict_public_buckets = false +} + +resource "aws_s3_bucket_acl" "website" { + depends_on = [ + aws_s3_bucket_ownership_controls.website, + aws_s3_bucket_public_access_block.website, + ] + + bucket = aws_s3_bucket.website.id + acl = "public-read" +} + +resource "aws_s3_bucket_policy" "website" { + bucket = aws_s3_bucket.website.id + policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Sid = "PublicReadGetObject" + Effect = "Allow" + Principal = "*" + Action = "s3:GetObject" + Resource = "${aws_s3_bucket.website.arn}/*" + } + ] + }) + + depends_on = [aws_s3_bucket_public_access_block.website] +} + +resource "aws_route53_zone" "main" { + name = var.domain_name + + tags = var.tags +} + +resource "aws_route53_record" "website" { + zone_id = aws_route53_zone.main.zone_id + name = var.bucket_name + type = "A" + + alias { + name = aws_s3_bucket_website_configuration.website.website_domain + zone_id = aws_s3_bucket.website.hosted_zone_id + evaluate_target_health = false + } +} \ No newline at end of file diff --git a/5d1a38e8-e15a-450e-903c-562255e51faf/variables.tf b/5d1a38e8-e15a-450e-903c-562255e51faf/variables.tf new file mode 100644 index 0000000..026204a --- /dev/null +++ b/5d1a38e8-e15a-450e-903c-562255e51faf/variables.tf @@ -0,0 +1,24 @@ +variable "region" { + description = "AWS region to deploy resources" + type = string + default = "us-east-1" +} + +variable "bucket_name" { + description = "Name of the S3 bucket for the static website" + type = string +} + +variable "domain_name" { + description = "Root domain name for the Route53 zone" + type = string +} + +variable "tags" { + description = "Tags to apply to resources" + type = map(string) + default = { + Environment = "Production" + ManagedBy = "Terraform" + } +} \ No newline at end of file