From 8568cb506ca013750f7f34e2e0f60d3cba716e8a Mon Sep 17 00:00:00 2001 From: ManojHA <25.06manojha@gmail.com> Date: Thu, 31 Oct 2024 10:34:17 +0530 Subject: [PATCH 01/12] rds updates --- deployments/openTofu/AWS_Readiness/databases/main.tf | 1 + deployments/openTofu/modules/rds/main.tf | 2 +- deployments/openTofu/modules/rds/variable.tf | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/deployments/openTofu/AWS_Readiness/databases/main.tf b/deployments/openTofu/AWS_Readiness/databases/main.tf index e0ebdf51..253c266a 100644 --- a/deployments/openTofu/AWS_Readiness/databases/main.tf +++ b/deployments/openTofu/AWS_Readiness/databases/main.tf @@ -8,6 +8,7 @@ module "security_group" { module "rds" { source = "../../modules/rds" + db_instance_name = "valnix-rds-01" rds_engine = "postgres" engine_version = "16.1" db_compute_instance = "db.t3.micro" diff --git a/deployments/openTofu/modules/rds/main.tf b/deployments/openTofu/modules/rds/main.tf index 90996855..d558ce26 100644 --- a/deployments/openTofu/modules/rds/main.tf +++ b/deployments/openTofu/modules/rds/main.tf @@ -4,7 +4,7 @@ resource "aws_db_subnet_group" "default" { } resource "aws_db_instance" "default" { - identifier = "mydbinstance" + identifier = var.db_instance_name allocated_storage = var.allocated_storage engine = var.rds_engine engine_version = var.engine_version diff --git a/deployments/openTofu/modules/rds/variable.tf b/deployments/openTofu/modules/rds/variable.tf index 1f3f94a3..7582c666 100644 --- a/deployments/openTofu/modules/rds/variable.tf +++ b/deployments/openTofu/modules/rds/variable.tf @@ -1,3 +1,7 @@ +variable "db_instance_name" { + type = string +} + variable "rds_engine" { type = string } From f7babf4334db9699a9cf20143cfc8f3076f9ceeb Mon Sep 17 00:00:00 2001 From: ManojHA <25.06manojha@gmail.com> Date: Thu, 31 Oct 2024 10:41:55 +0530 Subject: [PATCH 02/12] fleet availability zone update --- deployments/openTofu/AWS_Readiness/compute/main.tf | 2 +- deployments/openTofu/modules/ec2SpotFleet/main.tf | 2 +- deployments/openTofu/modules/ec2SpotFleet/variable.tf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deployments/openTofu/AWS_Readiness/compute/main.tf b/deployments/openTofu/AWS_Readiness/compute/main.tf index 38dee58f..92b6be13 100644 --- a/deployments/openTofu/AWS_Readiness/compute/main.tf +++ b/deployments/openTofu/AWS_Readiness/compute/main.tf @@ -58,7 +58,7 @@ module "ec2_spot_fleet" { instance_types = ["c5.large", "m5.large", "t3.large"] key_Pair = module.key_Pair.aws_key_pair_name subnet_id = data.aws_subnet.compute_subnet.id - ebs_availability_zone = module.ebs.ebs_availability_zone + availability_zone = data.aws_subnet.compute_subnet.availability_zone associate_pip = true security_group_ids = [ module.security_group.sg_id ] } diff --git a/deployments/openTofu/modules/ec2SpotFleet/main.tf b/deployments/openTofu/modules/ec2SpotFleet/main.tf index e8fc75a7..0cb88252 100644 --- a/deployments/openTofu/modules/ec2SpotFleet/main.tf +++ b/deployments/openTofu/modules/ec2SpotFleet/main.tf @@ -12,7 +12,7 @@ resource "aws_spot_fleet_request" "example" { spot_price = "0.6" iam_instance_profile = "OdinSpotInstance" subnet_id = var.subnet_id - availability_zone = var.ebs_availability_zone + availability_zone = var.availability_zone associate_public_ip_address = var.associate_pip vpc_security_group_ids = var.security_group_ids diff --git a/deployments/openTofu/modules/ec2SpotFleet/variable.tf b/deployments/openTofu/modules/ec2SpotFleet/variable.tf index 897377c2..cab20a1d 100644 --- a/deployments/openTofu/modules/ec2SpotFleet/variable.tf +++ b/deployments/openTofu/modules/ec2SpotFleet/variable.tf @@ -4,7 +4,7 @@ variable "key_Pair" { variable "subnet_id" { type = string } -variable "ebs_availability_zone" { +variable "availability_zone" { type = string } variable "instance_types" { From 43a1d2620e2a2d5c65eeb670b809797ec03eb13f Mon Sep 17 00:00:00 2001 From: ManojHA <25.06manojha@gmail.com> Date: Thu, 31 Oct 2024 13:52:37 +0530 Subject: [PATCH 03/12] ec2 fleet updates --- .../openTofu/AWS_Readiness/compute/main.tf | 24 ++++++++++--------- .../AWS_Readiness/compute/tofu.tfvars | 4 ++-- deployments/openTofu/modules/ebs/main.tf | 5 ++++ deployments/openTofu/modules/ebs/variable.tf | 6 +++++ .../openTofu/modules/ec2SpotFleet/main.tf | 13 ++++++---- 5 files changed, 35 insertions(+), 17 deletions(-) diff --git a/deployments/openTofu/AWS_Readiness/compute/main.tf b/deployments/openTofu/AWS_Readiness/compute/main.tf index 92b6be13..c8d1f23b 100644 --- a/deployments/openTofu/AWS_Readiness/compute/main.tf +++ b/deployments/openTofu/AWS_Readiness/compute/main.tf @@ -41,24 +41,26 @@ module "key_Pair" { # key_pair_name = module.key_Pair.aws_key_pair_name # } -# module "ebs" { -# source = "../../modules/ebs" - -# ebs_size = var.ebs_size -# ec2_availability_zone = "us-east-1a" #module.ec2_spot.spot_ec2_availability_zone -# multi_attach_enabled = var.multi_attach_enabled -# ebs_type = "io1" -# ebs_iops = 1000 -# } +module "ebs" { + source = "../../modules/ebs" + + ebs_name = "valnix_ebs" + ebs_size = var.ebs_size + ec2_availability_zone = "us-east-1a" #module.ec2_spot.spot_ec2_availability_zone + multi_attach_enabled = var.multi_attach_enabled + ebs_type = "gp3" + ebs_iops = 3000 + snapshot_id = "snap-0daa1ed513204e62f" +} module "ec2_spot_fleet" { source = "../../modules/ec2SpotFleet" ami_id = "ami-010e773a908e799c1" - instance_types = ["c5.large", "m5.large", "t3.large"] + instance_types = ["c5.xlarge", "m5.large", "t3.large"] key_Pair = module.key_Pair.aws_key_pair_name subnet_id = data.aws_subnet.compute_subnet.id - availability_zone = data.aws_subnet.compute_subnet.availability_zone + availability_zone = module.ebs.ebs_availability_zone#data.aws_subnet.compute_subnet.availability_zone associate_pip = true security_group_ids = [ module.security_group.sg_id ] } diff --git a/deployments/openTofu/AWS_Readiness/compute/tofu.tfvars b/deployments/openTofu/AWS_Readiness/compute/tofu.tfvars index 35770c46..af405c06 100644 --- a/deployments/openTofu/AWS_Readiness/compute/tofu.tfvars +++ b/deployments/openTofu/AWS_Readiness/compute/tofu.tfvars @@ -3,5 +3,5 @@ key_pair_name = "ec2_key_pair" access_point_mount_point = "/mnt/nixstore" spot_instance = false -ebs_size = 20 -multi_attach_enabled = true \ No newline at end of file +ebs_size = 30 +multi_attach_enabled = false \ No newline at end of file diff --git a/deployments/openTofu/modules/ebs/main.tf b/deployments/openTofu/modules/ebs/main.tf index 4099bc20..85c76b5d 100644 --- a/deployments/openTofu/modules/ebs/main.tf +++ b/deployments/openTofu/modules/ebs/main.tf @@ -4,4 +4,9 @@ resource "aws_ebs_volume" "ebs" { multi_attach_enabled = var.multi_attach_enabled type = var.ebs_type iops = var.ebs_iops + snapshot_id = var.snapshot_id + + tags = { + Name = var.ebs_name + } } \ No newline at end of file diff --git a/deployments/openTofu/modules/ebs/variable.tf b/deployments/openTofu/modules/ebs/variable.tf index 9661b912..4b1f46da 100644 --- a/deployments/openTofu/modules/ebs/variable.tf +++ b/deployments/openTofu/modules/ebs/variable.tf @@ -12,4 +12,10 @@ variable "ebs_type" { } variable "ebs_iops" { type = number +} +variable "snapshot_id" { + +} +variable "ebs_name" { + } \ No newline at end of file diff --git a/deployments/openTofu/modules/ec2SpotFleet/main.tf b/deployments/openTofu/modules/ec2SpotFleet/main.tf index 0cb88252..ddd7ecea 100644 --- a/deployments/openTofu/modules/ec2SpotFleet/main.tf +++ b/deployments/openTofu/modules/ec2SpotFleet/main.tf @@ -9,8 +9,8 @@ resource "aws_spot_fleet_request" "example" { ami = var.ami_id instance_type = launch_specification.value key_name = var.key_Pair - spot_price = "0.6" - iam_instance_profile = "OdinSpotInstance" + spot_price = "0.039" + iam_instance_profile = "OdinBuilderWorker" subnet_id = var.subnet_id availability_zone = var.availability_zone associate_public_ip_address = var.associate_pip @@ -19,6 +19,8 @@ resource "aws_spot_fleet_request" "example" { user_data = <<-EOF #!/bin/bash + cd /home/ubuntu + echo "hello" > log.txt BUCKET_NAME="valnix-stage-bucket" REGION="us-east-1" SCRIPT_NAME="deploy.sh" @@ -26,13 +28,16 @@ resource "aws_spot_fleet_request" "example" { aws s3 cp s3://$BUCKET_NAME/$SCRIPT_NAME $SCRIPT_PATH --region $REGION - cd /home/ubuntu chmod +x $SCRIPT_NAME su ubuntu -c ./$SCRIPT_NAME EOF - + root_block_device { + volume_size = "30" + volume_type = "gp3" + delete_on_termination = "true" + } tags = { Name = "valnix-spot-fleet-instance" } From c00d2d9ea34cc1f5ec2a5a2ad95f43b74e4dfccb Mon Sep 17 00:00:00 2001 From: ManojHA <25.06manojha@gmail.com> Date: Sun, 1 Dec 2024 09:28:07 +0530 Subject: [PATCH 04/12] GCP iac added --- .gitignore | 1 + .../{ => AWS}/AWS_Readiness/compute/data.tf | 0 .../{ => AWS}/AWS_Readiness/compute/main.tf | 0 .../AWS_Readiness/compute/provider.tf | 0 .../AWS_Readiness/compute/tofu.tfvars | 0 .../AWS_Readiness/compute/variables.tf | 0 .../{ => AWS}/AWS_Readiness/databases/data.tf | 0 .../{ => AWS}/AWS_Readiness/databases/main.tf | 0 .../AWS_Readiness/databases/provider.tf | 0 .../AWS_Readiness/databases/variable.tf | 0 .../{ => AWS}/AWS_Readiness/network/main.tf | 0 .../AWS_Readiness/network/provider.tf | 0 .../modules/ebs/ebs_volume_attach/main.tf | 0 .../modules/ebs/ebs_volume_attach/variable.tf | 0 .../openTofu/{ => AWS}/modules/ebs/main.tf | 0 .../openTofu/{ => AWS}/modules/ebs/output.tf | 0 .../{ => AWS}/modules/ebs/variable.tf | 0 .../openTofu/{ => AWS}/modules/ec2/main.tf | 0 .../openTofu/{ => AWS}/modules/ec2/output.tf | 0 .../{ => AWS}/modules/ec2/variables.tf | 0 .../{ => AWS}/modules/ec2SpotFleet/main.tf | 0 .../modules/ec2SpotFleet/variable.tf | 0 .../{ => AWS}/modules/ec2SpotInstance/main.tf | 0 .../modules/ec2SpotInstance/output.tf | 0 .../modules/ec2SpotInstance/variable.tf | 0 .../{ => AWS}/modules/efs/accessPoint/main.tf | 0 .../modules/efs/accessPoint/output.tf | 0 .../modules/efs/accessPoint/variable.tf | 0 .../openTofu/{ => AWS}/modules/efs/main.tf | 0 .../openTofu/{ => AWS}/modules/efs/output.tf | 0 .../{ => AWS}/modules/efs/variable.tf | 0 .../{ => AWS}/modules/keyPair/maint.tf | 0 .../{ => AWS}/modules/keyPair/output.tf | 0 .../{ => AWS}/modules/keyPair/variable.tf | 0 .../openTofu/{ => AWS}/modules/rds/main.tf | 0 .../{ => AWS}/modules/rds/variable.tf | 0 .../modules/vpc/internetGateway/main.tf | 0 .../modules/vpc/internetGateway/output.tf | 0 .../modules/vpc/internetGateway/variable.tf | 0 .../openTofu/{ => AWS}/modules/vpc/main.tf | 0 .../{ => AWS}/modules/vpc/nic/main.tf | 0 .../{ => AWS}/modules/vpc/nic/variable.tf | 0 .../openTofu/{ => AWS}/modules/vpc/output.tf | 0 .../{ => AWS}/modules/vpc/routeTable/main.tf | 0 .../modules/vpc/routeTable/variable.tf | 0 .../modules/vpc/securityGroups/main.tf | 0 .../modules/vpc/securityGroups/output.tf | 0 .../modules/vpc/securityGroups/variable.tf | 0 .../{ => AWS}/modules/vpc/subnet/main.tf | 0 .../{ => AWS}/modules/vpc/subnet/output.tf | 0 .../{ => AWS}/modules/vpc/subnet/variable.tf | 0 .../{ => AWS}/modules/vpc/variables.tf | 0 .../GCP/gcp_readiness/compute/data.tf | 23 +++++++ .../GCP/gcp_readiness/compute/main.tf | 51 +++++++++++++++ .../GCP/gcp_readiness/compute/provider.tf | 22 +++++++ .../GCP/gcp_readiness/network/main.tf | 52 +++++++++++++++ .../GCP/gcp_readiness/network/provider.tf | 23 +++++++ .../GCP/modules/compute_engine/main.tf | 64 +++++++++++++++++++ .../GCP/modules/compute_engine/variables.tf | 23 +++++++ .../GCP/modules/persistant_disk/main.tf | 9 +++ .../GCP/modules/persistant_disk/output.tf | 6 ++ .../GCP/modules/persistant_disk/variable.tf | 25 ++++++++ .../openTofu/GCP/modules/spot_MIG/main.tf | 40 ++++++++++++ .../openTofu/GCP/modules/spot_MIG/variable.tf | 19 ++++++ .../GCP/modules/spot_vm_template/main.tf | 51 +++++++++++++++ .../GCP/modules/spot_vm_template/output.tf | 3 + .../GCP/modules/spot_vm_template/variable.tf | 27 ++++++++ .../openTofu/GCP/modules/vpc/firewall/main.tf | 11 ++++ .../GCP/modules/vpc/firewall/variable.tf | 15 +++++ deployments/openTofu/GCP/modules/vpc/main.tf | 4 ++ .../openTofu/GCP/modules/vpc/output.tf | 3 + .../openTofu/GCP/modules/vpc/subnet/main.tf | 6 ++ .../openTofu/GCP/modules/vpc/subnet/output.tf | 3 + .../GCP/modules/vpc/subnet/variable.tf | 12 ++++ .../openTofu/GCP/modules/vpc/variable.tf | 3 + 75 files changed, 496 insertions(+) rename deployments/openTofu/{ => AWS}/AWS_Readiness/compute/data.tf (100%) rename deployments/openTofu/{ => AWS}/AWS_Readiness/compute/main.tf (100%) rename deployments/openTofu/{ => AWS}/AWS_Readiness/compute/provider.tf (100%) rename deployments/openTofu/{ => AWS}/AWS_Readiness/compute/tofu.tfvars (100%) rename deployments/openTofu/{ => AWS}/AWS_Readiness/compute/variables.tf (100%) rename deployments/openTofu/{ => AWS}/AWS_Readiness/databases/data.tf (100%) rename deployments/openTofu/{ => AWS}/AWS_Readiness/databases/main.tf (100%) rename deployments/openTofu/{ => AWS}/AWS_Readiness/databases/provider.tf (100%) rename deployments/openTofu/{ => AWS}/AWS_Readiness/databases/variable.tf (100%) rename deployments/openTofu/{ => AWS}/AWS_Readiness/network/main.tf (100%) rename deployments/openTofu/{ => AWS}/AWS_Readiness/network/provider.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ebs/ebs_volume_attach/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ebs/ebs_volume_attach/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ebs/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ebs/output.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ebs/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ec2/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ec2/output.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ec2/variables.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ec2SpotFleet/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ec2SpotFleet/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ec2SpotInstance/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ec2SpotInstance/output.tf (100%) rename deployments/openTofu/{ => AWS}/modules/ec2SpotInstance/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/efs/accessPoint/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/efs/accessPoint/output.tf (100%) rename deployments/openTofu/{ => AWS}/modules/efs/accessPoint/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/efs/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/efs/output.tf (100%) rename deployments/openTofu/{ => AWS}/modules/efs/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/keyPair/maint.tf (100%) rename deployments/openTofu/{ => AWS}/modules/keyPair/output.tf (100%) rename deployments/openTofu/{ => AWS}/modules/keyPair/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/rds/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/rds/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/internetGateway/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/internetGateway/output.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/internetGateway/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/nic/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/nic/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/output.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/routeTable/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/routeTable/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/securityGroups/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/securityGroups/output.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/securityGroups/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/subnet/main.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/subnet/output.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/subnet/variable.tf (100%) rename deployments/openTofu/{ => AWS}/modules/vpc/variables.tf (100%) create mode 100644 deployments/openTofu/GCP/gcp_readiness/compute/data.tf create mode 100644 deployments/openTofu/GCP/gcp_readiness/compute/main.tf create mode 100644 deployments/openTofu/GCP/gcp_readiness/compute/provider.tf create mode 100644 deployments/openTofu/GCP/gcp_readiness/network/main.tf create mode 100644 deployments/openTofu/GCP/gcp_readiness/network/provider.tf create mode 100644 deployments/openTofu/GCP/modules/compute_engine/main.tf create mode 100644 deployments/openTofu/GCP/modules/compute_engine/variables.tf create mode 100644 deployments/openTofu/GCP/modules/persistant_disk/main.tf create mode 100644 deployments/openTofu/GCP/modules/persistant_disk/output.tf create mode 100644 deployments/openTofu/GCP/modules/persistant_disk/variable.tf create mode 100644 deployments/openTofu/GCP/modules/spot_MIG/main.tf create mode 100644 deployments/openTofu/GCP/modules/spot_MIG/variable.tf create mode 100644 deployments/openTofu/GCP/modules/spot_vm_template/main.tf create mode 100644 deployments/openTofu/GCP/modules/spot_vm_template/output.tf create mode 100644 deployments/openTofu/GCP/modules/spot_vm_template/variable.tf create mode 100644 deployments/openTofu/GCP/modules/vpc/firewall/main.tf create mode 100644 deployments/openTofu/GCP/modules/vpc/firewall/variable.tf create mode 100644 deployments/openTofu/GCP/modules/vpc/main.tf create mode 100644 deployments/openTofu/GCP/modules/vpc/output.tf create mode 100644 deployments/openTofu/GCP/modules/vpc/subnet/main.tf create mode 100644 deployments/openTofu/GCP/modules/vpc/subnet/output.tf create mode 100644 deployments/openTofu/GCP/modules/vpc/subnet/variable.tf create mode 100644 deployments/openTofu/GCP/modules/vpc/variable.tf diff --git a/.gitignore b/.gitignore index d450bacc..ffe269da 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ odinb *.tfstate.backup *.terraform.lock* .terraform/ +**keys.json \ No newline at end of file diff --git a/deployments/openTofu/AWS_Readiness/compute/data.tf b/deployments/openTofu/AWS/AWS_Readiness/compute/data.tf similarity index 100% rename from deployments/openTofu/AWS_Readiness/compute/data.tf rename to deployments/openTofu/AWS/AWS_Readiness/compute/data.tf diff --git a/deployments/openTofu/AWS_Readiness/compute/main.tf b/deployments/openTofu/AWS/AWS_Readiness/compute/main.tf similarity index 100% rename from deployments/openTofu/AWS_Readiness/compute/main.tf rename to deployments/openTofu/AWS/AWS_Readiness/compute/main.tf diff --git a/deployments/openTofu/AWS_Readiness/compute/provider.tf b/deployments/openTofu/AWS/AWS_Readiness/compute/provider.tf similarity index 100% rename from deployments/openTofu/AWS_Readiness/compute/provider.tf rename to deployments/openTofu/AWS/AWS_Readiness/compute/provider.tf diff --git a/deployments/openTofu/AWS_Readiness/compute/tofu.tfvars b/deployments/openTofu/AWS/AWS_Readiness/compute/tofu.tfvars similarity index 100% rename from deployments/openTofu/AWS_Readiness/compute/tofu.tfvars rename to deployments/openTofu/AWS/AWS_Readiness/compute/tofu.tfvars diff --git a/deployments/openTofu/AWS_Readiness/compute/variables.tf b/deployments/openTofu/AWS/AWS_Readiness/compute/variables.tf similarity index 100% rename from deployments/openTofu/AWS_Readiness/compute/variables.tf rename to deployments/openTofu/AWS/AWS_Readiness/compute/variables.tf diff --git a/deployments/openTofu/AWS_Readiness/databases/data.tf b/deployments/openTofu/AWS/AWS_Readiness/databases/data.tf similarity index 100% rename from deployments/openTofu/AWS_Readiness/databases/data.tf rename to deployments/openTofu/AWS/AWS_Readiness/databases/data.tf diff --git a/deployments/openTofu/AWS_Readiness/databases/main.tf b/deployments/openTofu/AWS/AWS_Readiness/databases/main.tf similarity index 100% rename from deployments/openTofu/AWS_Readiness/databases/main.tf rename to deployments/openTofu/AWS/AWS_Readiness/databases/main.tf diff --git a/deployments/openTofu/AWS_Readiness/databases/provider.tf b/deployments/openTofu/AWS/AWS_Readiness/databases/provider.tf similarity index 100% rename from deployments/openTofu/AWS_Readiness/databases/provider.tf rename to deployments/openTofu/AWS/AWS_Readiness/databases/provider.tf diff --git a/deployments/openTofu/AWS_Readiness/databases/variable.tf b/deployments/openTofu/AWS/AWS_Readiness/databases/variable.tf similarity index 100% rename from deployments/openTofu/AWS_Readiness/databases/variable.tf rename to deployments/openTofu/AWS/AWS_Readiness/databases/variable.tf diff --git a/deployments/openTofu/AWS_Readiness/network/main.tf b/deployments/openTofu/AWS/AWS_Readiness/network/main.tf similarity index 100% rename from deployments/openTofu/AWS_Readiness/network/main.tf rename to deployments/openTofu/AWS/AWS_Readiness/network/main.tf diff --git a/deployments/openTofu/AWS_Readiness/network/provider.tf b/deployments/openTofu/AWS/AWS_Readiness/network/provider.tf similarity index 100% rename from deployments/openTofu/AWS_Readiness/network/provider.tf rename to deployments/openTofu/AWS/AWS_Readiness/network/provider.tf diff --git a/deployments/openTofu/modules/ebs/ebs_volume_attach/main.tf b/deployments/openTofu/AWS/modules/ebs/ebs_volume_attach/main.tf similarity index 100% rename from deployments/openTofu/modules/ebs/ebs_volume_attach/main.tf rename to deployments/openTofu/AWS/modules/ebs/ebs_volume_attach/main.tf diff --git a/deployments/openTofu/modules/ebs/ebs_volume_attach/variable.tf b/deployments/openTofu/AWS/modules/ebs/ebs_volume_attach/variable.tf similarity index 100% rename from deployments/openTofu/modules/ebs/ebs_volume_attach/variable.tf rename to deployments/openTofu/AWS/modules/ebs/ebs_volume_attach/variable.tf diff --git a/deployments/openTofu/modules/ebs/main.tf b/deployments/openTofu/AWS/modules/ebs/main.tf similarity index 100% rename from deployments/openTofu/modules/ebs/main.tf rename to deployments/openTofu/AWS/modules/ebs/main.tf diff --git a/deployments/openTofu/modules/ebs/output.tf b/deployments/openTofu/AWS/modules/ebs/output.tf similarity index 100% rename from deployments/openTofu/modules/ebs/output.tf rename to deployments/openTofu/AWS/modules/ebs/output.tf diff --git a/deployments/openTofu/modules/ebs/variable.tf b/deployments/openTofu/AWS/modules/ebs/variable.tf similarity index 100% rename from deployments/openTofu/modules/ebs/variable.tf rename to deployments/openTofu/AWS/modules/ebs/variable.tf diff --git a/deployments/openTofu/modules/ec2/main.tf b/deployments/openTofu/AWS/modules/ec2/main.tf similarity index 100% rename from deployments/openTofu/modules/ec2/main.tf rename to deployments/openTofu/AWS/modules/ec2/main.tf diff --git a/deployments/openTofu/modules/ec2/output.tf b/deployments/openTofu/AWS/modules/ec2/output.tf similarity index 100% rename from deployments/openTofu/modules/ec2/output.tf rename to deployments/openTofu/AWS/modules/ec2/output.tf diff --git a/deployments/openTofu/modules/ec2/variables.tf b/deployments/openTofu/AWS/modules/ec2/variables.tf similarity index 100% rename from deployments/openTofu/modules/ec2/variables.tf rename to deployments/openTofu/AWS/modules/ec2/variables.tf diff --git a/deployments/openTofu/modules/ec2SpotFleet/main.tf b/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf similarity index 100% rename from deployments/openTofu/modules/ec2SpotFleet/main.tf rename to deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf diff --git a/deployments/openTofu/modules/ec2SpotFleet/variable.tf b/deployments/openTofu/AWS/modules/ec2SpotFleet/variable.tf similarity index 100% rename from deployments/openTofu/modules/ec2SpotFleet/variable.tf rename to deployments/openTofu/AWS/modules/ec2SpotFleet/variable.tf diff --git a/deployments/openTofu/modules/ec2SpotInstance/main.tf b/deployments/openTofu/AWS/modules/ec2SpotInstance/main.tf similarity index 100% rename from deployments/openTofu/modules/ec2SpotInstance/main.tf rename to deployments/openTofu/AWS/modules/ec2SpotInstance/main.tf diff --git a/deployments/openTofu/modules/ec2SpotInstance/output.tf b/deployments/openTofu/AWS/modules/ec2SpotInstance/output.tf similarity index 100% rename from deployments/openTofu/modules/ec2SpotInstance/output.tf rename to deployments/openTofu/AWS/modules/ec2SpotInstance/output.tf diff --git a/deployments/openTofu/modules/ec2SpotInstance/variable.tf b/deployments/openTofu/AWS/modules/ec2SpotInstance/variable.tf similarity index 100% rename from deployments/openTofu/modules/ec2SpotInstance/variable.tf rename to deployments/openTofu/AWS/modules/ec2SpotInstance/variable.tf diff --git a/deployments/openTofu/modules/efs/accessPoint/main.tf b/deployments/openTofu/AWS/modules/efs/accessPoint/main.tf similarity index 100% rename from deployments/openTofu/modules/efs/accessPoint/main.tf rename to deployments/openTofu/AWS/modules/efs/accessPoint/main.tf diff --git a/deployments/openTofu/modules/efs/accessPoint/output.tf b/deployments/openTofu/AWS/modules/efs/accessPoint/output.tf similarity index 100% rename from deployments/openTofu/modules/efs/accessPoint/output.tf rename to deployments/openTofu/AWS/modules/efs/accessPoint/output.tf diff --git a/deployments/openTofu/modules/efs/accessPoint/variable.tf b/deployments/openTofu/AWS/modules/efs/accessPoint/variable.tf similarity index 100% rename from deployments/openTofu/modules/efs/accessPoint/variable.tf rename to deployments/openTofu/AWS/modules/efs/accessPoint/variable.tf diff --git a/deployments/openTofu/modules/efs/main.tf b/deployments/openTofu/AWS/modules/efs/main.tf similarity index 100% rename from deployments/openTofu/modules/efs/main.tf rename to deployments/openTofu/AWS/modules/efs/main.tf diff --git a/deployments/openTofu/modules/efs/output.tf b/deployments/openTofu/AWS/modules/efs/output.tf similarity index 100% rename from deployments/openTofu/modules/efs/output.tf rename to deployments/openTofu/AWS/modules/efs/output.tf diff --git a/deployments/openTofu/modules/efs/variable.tf b/deployments/openTofu/AWS/modules/efs/variable.tf similarity index 100% rename from deployments/openTofu/modules/efs/variable.tf rename to deployments/openTofu/AWS/modules/efs/variable.tf diff --git a/deployments/openTofu/modules/keyPair/maint.tf b/deployments/openTofu/AWS/modules/keyPair/maint.tf similarity index 100% rename from deployments/openTofu/modules/keyPair/maint.tf rename to deployments/openTofu/AWS/modules/keyPair/maint.tf diff --git a/deployments/openTofu/modules/keyPair/output.tf b/deployments/openTofu/AWS/modules/keyPair/output.tf similarity index 100% rename from deployments/openTofu/modules/keyPair/output.tf rename to deployments/openTofu/AWS/modules/keyPair/output.tf diff --git a/deployments/openTofu/modules/keyPair/variable.tf b/deployments/openTofu/AWS/modules/keyPair/variable.tf similarity index 100% rename from deployments/openTofu/modules/keyPair/variable.tf rename to deployments/openTofu/AWS/modules/keyPair/variable.tf diff --git a/deployments/openTofu/modules/rds/main.tf b/deployments/openTofu/AWS/modules/rds/main.tf similarity index 100% rename from deployments/openTofu/modules/rds/main.tf rename to deployments/openTofu/AWS/modules/rds/main.tf diff --git a/deployments/openTofu/modules/rds/variable.tf b/deployments/openTofu/AWS/modules/rds/variable.tf similarity index 100% rename from deployments/openTofu/modules/rds/variable.tf rename to deployments/openTofu/AWS/modules/rds/variable.tf diff --git a/deployments/openTofu/modules/vpc/internetGateway/main.tf b/deployments/openTofu/AWS/modules/vpc/internetGateway/main.tf similarity index 100% rename from deployments/openTofu/modules/vpc/internetGateway/main.tf rename to deployments/openTofu/AWS/modules/vpc/internetGateway/main.tf diff --git a/deployments/openTofu/modules/vpc/internetGateway/output.tf b/deployments/openTofu/AWS/modules/vpc/internetGateway/output.tf similarity index 100% rename from deployments/openTofu/modules/vpc/internetGateway/output.tf rename to deployments/openTofu/AWS/modules/vpc/internetGateway/output.tf diff --git a/deployments/openTofu/modules/vpc/internetGateway/variable.tf b/deployments/openTofu/AWS/modules/vpc/internetGateway/variable.tf similarity index 100% rename from deployments/openTofu/modules/vpc/internetGateway/variable.tf rename to deployments/openTofu/AWS/modules/vpc/internetGateway/variable.tf diff --git a/deployments/openTofu/modules/vpc/main.tf b/deployments/openTofu/AWS/modules/vpc/main.tf similarity index 100% rename from deployments/openTofu/modules/vpc/main.tf rename to deployments/openTofu/AWS/modules/vpc/main.tf diff --git a/deployments/openTofu/modules/vpc/nic/main.tf b/deployments/openTofu/AWS/modules/vpc/nic/main.tf similarity index 100% rename from deployments/openTofu/modules/vpc/nic/main.tf rename to deployments/openTofu/AWS/modules/vpc/nic/main.tf diff --git a/deployments/openTofu/modules/vpc/nic/variable.tf b/deployments/openTofu/AWS/modules/vpc/nic/variable.tf similarity index 100% rename from deployments/openTofu/modules/vpc/nic/variable.tf rename to deployments/openTofu/AWS/modules/vpc/nic/variable.tf diff --git a/deployments/openTofu/modules/vpc/output.tf b/deployments/openTofu/AWS/modules/vpc/output.tf similarity index 100% rename from deployments/openTofu/modules/vpc/output.tf rename to deployments/openTofu/AWS/modules/vpc/output.tf diff --git a/deployments/openTofu/modules/vpc/routeTable/main.tf b/deployments/openTofu/AWS/modules/vpc/routeTable/main.tf similarity index 100% rename from deployments/openTofu/modules/vpc/routeTable/main.tf rename to deployments/openTofu/AWS/modules/vpc/routeTable/main.tf diff --git a/deployments/openTofu/modules/vpc/routeTable/variable.tf b/deployments/openTofu/AWS/modules/vpc/routeTable/variable.tf similarity index 100% rename from deployments/openTofu/modules/vpc/routeTable/variable.tf rename to deployments/openTofu/AWS/modules/vpc/routeTable/variable.tf diff --git a/deployments/openTofu/modules/vpc/securityGroups/main.tf b/deployments/openTofu/AWS/modules/vpc/securityGroups/main.tf similarity index 100% rename from deployments/openTofu/modules/vpc/securityGroups/main.tf rename to deployments/openTofu/AWS/modules/vpc/securityGroups/main.tf diff --git a/deployments/openTofu/modules/vpc/securityGroups/output.tf b/deployments/openTofu/AWS/modules/vpc/securityGroups/output.tf similarity index 100% rename from deployments/openTofu/modules/vpc/securityGroups/output.tf rename to deployments/openTofu/AWS/modules/vpc/securityGroups/output.tf diff --git a/deployments/openTofu/modules/vpc/securityGroups/variable.tf b/deployments/openTofu/AWS/modules/vpc/securityGroups/variable.tf similarity index 100% rename from deployments/openTofu/modules/vpc/securityGroups/variable.tf rename to deployments/openTofu/AWS/modules/vpc/securityGroups/variable.tf diff --git a/deployments/openTofu/modules/vpc/subnet/main.tf b/deployments/openTofu/AWS/modules/vpc/subnet/main.tf similarity index 100% rename from deployments/openTofu/modules/vpc/subnet/main.tf rename to deployments/openTofu/AWS/modules/vpc/subnet/main.tf diff --git a/deployments/openTofu/modules/vpc/subnet/output.tf b/deployments/openTofu/AWS/modules/vpc/subnet/output.tf similarity index 100% rename from deployments/openTofu/modules/vpc/subnet/output.tf rename to deployments/openTofu/AWS/modules/vpc/subnet/output.tf diff --git a/deployments/openTofu/modules/vpc/subnet/variable.tf b/deployments/openTofu/AWS/modules/vpc/subnet/variable.tf similarity index 100% rename from deployments/openTofu/modules/vpc/subnet/variable.tf rename to deployments/openTofu/AWS/modules/vpc/subnet/variable.tf diff --git a/deployments/openTofu/modules/vpc/variables.tf b/deployments/openTofu/AWS/modules/vpc/variables.tf similarity index 100% rename from deployments/openTofu/modules/vpc/variables.tf rename to deployments/openTofu/AWS/modules/vpc/variables.tf diff --git a/deployments/openTofu/GCP/gcp_readiness/compute/data.tf b/deployments/openTofu/GCP/gcp_readiness/compute/data.tf new file mode 100644 index 00000000..44996e7c --- /dev/null +++ b/deployments/openTofu/GCP/gcp_readiness/compute/data.tf @@ -0,0 +1,23 @@ +data "google_service_account" "name" { + account_id = "valk_user1" +} + +data "google_compute_network" "vpc" { + name = "valyrie-vpc" +} + +# Fetch an existing Subnet +data "google_compute_subnetwork" "worker-subnet" { + name = "valkyrie-worker-snet-01" + region = "asia-south1" +} + +data "google_compute_subnetwork" "server-subnet" { + name = "valkyrie-server-snet-01" + region = "asia-south1" +} + +data "google_compute_subnetwork" "db-subnet" { + name = "valkyrie-db-snet-01" + region = "asia-south1" +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/gcp_readiness/compute/main.tf b/deployments/openTofu/GCP/gcp_readiness/compute/main.tf new file mode 100644 index 00000000..6b96ef8f --- /dev/null +++ b/deployments/openTofu/GCP/gcp_readiness/compute/main.tf @@ -0,0 +1,51 @@ +module "persistant_disk" { + source = "../../modules/persistant_disk" + + disk_name = "nix-disk" + disk_size_gb = 200 + disk_type = "pd-balanced" + project_name = "Valkyrie-project" + zone_name = "asia-south1-c" + disk_iops = 3500 + disk_throughput = 300 +} + +module "server_vm" { + source = "../../modules/compute_engine" + + vm_name = "valkyrie-server" + os_image = "projects/ubuntu-os-cloud/global/images/ubuntu-2410-oracular-amd64-v20241115" + os_disk_size = 10 + os_disk_type = "pd-standard" + + disk_id = module.persistant_disk.disk_id + disk_name = module.persistant_disk.disk_name + + machine_type = "n2-custom-4-4096" + snet_id = data.google_compute_subnetwork.server-subnet.id + +} + +module "spot_vm_template" { + source = "../../modules/spot_vm_template" + + template_name = "valkyrie-worker-template" + vpc_name = data.google_compute_network.vpc.id #module.vpc.id + snet_name = data.google_compute_subnetwork.worker-subnet.id #module.vpc.snet_id + machine_type = "n2-custom-4-8192" + os = "projects/ubuntu-os-cloud/global/images/ubuntu-2410-oracular-amd64-v20241115" + os_disk_size = 10 + os_disk_access_mode = "READ_WRITE" + data_disk_name = module.persistant_disk.disk_name + data_disk_access_mode = "READ_ONLY" +} + +module "spot_mig" { + source = "../../modules/spot_MIG" + + mig_name = "valkyrie-worker" + mig_target_size = 1 + vm_template_id = module.spot_vm_template.spot_vm_template_id + data_disk_name = module.persistant_disk.disk_name + zone_name = "asia-south1-c" +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/gcp_readiness/compute/provider.tf b/deployments/openTofu/GCP/gcp_readiness/compute/provider.tf new file mode 100644 index 00000000..843deb52 --- /dev/null +++ b/deployments/openTofu/GCP/gcp_readiness/compute/provider.tf @@ -0,0 +1,22 @@ +terraform { + required_providers { + google = { + source = "hashicorp/google" + version = "~> 4.0" + } + } + + required_version = ">= 1.5.0" + + backend "gcs" { + bucket = "tofu-statefile-bucket" + prefix = "tofustate/compute" + # project = "valkyrie-project" + } +} + +provider "google" { + credentials = "./keys.json" + project = "valkyrie-project" + region = "asia-south1" +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/gcp_readiness/network/main.tf b/deployments/openTofu/GCP/gcp_readiness/network/main.tf new file mode 100644 index 00000000..acea8e59 --- /dev/null +++ b/deployments/openTofu/GCP/gcp_readiness/network/main.tf @@ -0,0 +1,52 @@ +module "vpc" { + source = "../../modules/vpc" + + vpc_name = "valkyrie-vpc" +} + +module "subnet1" { + source = "../../modules/vpc/subnet" + + snet_name = "valkyrie-worker-snet-01" + snet_cidr = "10.0.0.0/22" + region = "asia-south1" + vpc_id = module.vpc.vpc_id +} + +module "subnet2" { + source = "../../modules/vpc/subnet" + + snet_name = "valkyrie-server-snet-01" + snet_cidr = "10.0.4.0/22" + region = "asia-south1" + vpc_id = module.vpc.vpc_id +} + +module "subnet3" { + source = "../../modules/vpc/subnet" + + snet_name = "valkyrie-db-snet-01" + snet_cidr = "10.0.8.0/22" + region = "asia-south1" + vpc_id = module.vpc.vpc_id +} + +module "ssh_firewall" { + source = "../../modules/vpc/firewall" + + vpc_id = module.vpc.vpc_id + rule_name = "allow-ssh" + ports = [ "22" ] + protocol_name = "tcp" + source_ips = ["0.0.0.0/0"] +} + +module "db_firewall" { + source = "../../modules/vpc/firewall" + + vpc_id = module.vpc.vpc_id + rule_name = "allow-db" + ports = [ "5432" ] + protocol_name = "tcp" + source_ips = ["0.0.0.0/0"] +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/gcp_readiness/network/provider.tf b/deployments/openTofu/GCP/gcp_readiness/network/provider.tf new file mode 100644 index 00000000..ac0bc77e --- /dev/null +++ b/deployments/openTofu/GCP/gcp_readiness/network/provider.tf @@ -0,0 +1,23 @@ +terraform { + required_providers { + google = { + source = "hashicorp/google" + version = "~> 4.0" + } + } + + required_version = ">= 1.5.0" + + backend "gcs" { + bucket = "tofu-statefile-bucket" + prefix = "tofustate/network" + + } +} + +provider "google" { + credentials = "./keys.json" + project = "valkyrie-project" + region = "asia-south1" + zone = "asia-south1-c" +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/compute_engine/main.tf b/deployments/openTofu/GCP/modules/compute_engine/main.tf new file mode 100644 index 00000000..22af95e1 --- /dev/null +++ b/deployments/openTofu/GCP/modules/compute_engine/main.tf @@ -0,0 +1,64 @@ + +resource "google_compute_instance" "compute-engine" { + attached_disk { + device_name = var.disk_name + mode = "READ_ONLY" + source = var.disk_id + } + + zone = "asia-south1-c" + + boot_disk { + auto_delete = true + device_name = var.vm_name + + initialize_params { + image = var.os_image + size = var.os_disk_size + type = var.os_disk_type + } + + mode = "READ_WRITE" + } + + can_ip_forward = false + deletion_protection = false + enable_display = false + + + machine_type = var.machine_type + + metadata = { + startup-script = "echo 'hello' > test.txt" + } + + name = var.vm_name + + network_interface { + access_config { + network_tier = "STANDARD" + } + + queue_count = 0 + stack_type = "IPV4_ONLY" + subnetwork = var.snet_id + } + + scheduling { + # automatic_restart = false + # on_host_maintenance = "TERMINATE" + # preemptible = false + provisioning_model = "STANDARD" + } + + service_account { + scopes = [ "cloud-platform" ] + } + + shielded_instance_config { + enable_integrity_monitoring = true + enable_secure_boot = false + enable_vtpm = true + } + +} diff --git a/deployments/openTofu/GCP/modules/compute_engine/variables.tf b/deployments/openTofu/GCP/modules/compute_engine/variables.tf new file mode 100644 index 00000000..7be5bbbc --- /dev/null +++ b/deployments/openTofu/GCP/modules/compute_engine/variables.tf @@ -0,0 +1,23 @@ +variable "machine_type" { + +} +variable "disk_name" { + +} +variable "disk_id" { + +} +variable "os_image" { + +} +variable "os_disk_size" { + type = number +} +variable "os_disk_type" { +} +variable "snet_id" { + +} +variable "vm_name" { + +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/persistant_disk/main.tf b/deployments/openTofu/GCP/modules/persistant_disk/main.tf new file mode 100644 index 00000000..93705f14 --- /dev/null +++ b/deployments/openTofu/GCP/modules/persistant_disk/main.tf @@ -0,0 +1,9 @@ +resource "google_compute_disk" "persistant_disk" { + name = var.disk_name + size = var.disk_size_gb + type = var.disk_type + zone = var.zone_name + physical_block_size_bytes = 4096 + provisioned_iops = contains(["hyperdisk"],var.disk_type) ? var.disk_iops : 0 + provisioned_throughput = contains(["hyperdisk"],var.disk_type) ? var.disk_throughput : 0 +} diff --git a/deployments/openTofu/GCP/modules/persistant_disk/output.tf b/deployments/openTofu/GCP/modules/persistant_disk/output.tf new file mode 100644 index 00000000..c600503e --- /dev/null +++ b/deployments/openTofu/GCP/modules/persistant_disk/output.tf @@ -0,0 +1,6 @@ +output "disk_name" { + value = google_compute_disk.persistant_disk.name +} +output "disk_id" { + value = google_compute_disk.persistant_disk.id +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/persistant_disk/variable.tf b/deployments/openTofu/GCP/modules/persistant_disk/variable.tf new file mode 100644 index 00000000..c6cb3100 --- /dev/null +++ b/deployments/openTofu/GCP/modules/persistant_disk/variable.tf @@ -0,0 +1,25 @@ +variable "disk_name" { + +} +variable "disk_size_gb" { + type = number +} +variable "project_name" { + +} +variable "zone_name" { + type = string + validation { + condition = contains(["asia-south1-c", "asia-south1-b", "asia-south1-a"], var.zone_name) + error_message = "Only asia-south1-c, asia-south1-b, asia-south1-a are allowed" + } +} +variable "disk_type" { + +} +variable "disk_throughput" { + type = number +} +variable "disk_iops" { + type = number +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/spot_MIG/main.tf b/deployments/openTofu/GCP/modules/spot_MIG/main.tf new file mode 100644 index 00000000..7c10c2fb --- /dev/null +++ b/deployments/openTofu/GCP/modules/spot_MIG/main.tf @@ -0,0 +1,40 @@ +resource "google_compute_instance_group_manager" "instance_group" { + name = var.mig_name + base_instance_name = "${var.mig_name}-1" + target_size = var.mig_target_size + zone = var.zone_name + + version { + instance_template = var.vm_template_id + name = "v1" # Optional but helps track versions + } + + update_policy { + type = "PROACTIVE" + minimal_action = "RESTART" + replacement_method = "RECREATE" + max_unavailable_fixed = 1 + } + + instance_lifecycle_policy { + force_update_on_repair = "YES" + # default_action_on_failure = "REPAIR" + } +} + +resource "google_compute_autoscaler" "autoscaler" { + name = "${var.mig_name}-autoscaler" + zone = var.zone_name + target = google_compute_instance_group_manager.instance_group.self_link + + autoscaling_policy { + + min_replicas = 1 + max_replicas = 10 + cooldown_period = 60 + + cpu_utilization { + target = 0.95 + } + } +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/spot_MIG/variable.tf b/deployments/openTofu/GCP/modules/spot_MIG/variable.tf new file mode 100644 index 00000000..3711dd52 --- /dev/null +++ b/deployments/openTofu/GCP/modules/spot_MIG/variable.tf @@ -0,0 +1,19 @@ +variable "mig_name" { + +} +variable "vm_template_id" { + +} +variable "mig_target_size" { + +} +variable "zone_name" { + type = string + validation { + condition = contains(["asia-south1-c", "asia-south1-b", "asia-south1-a"], var.zone_name) + error_message = "Only asia-south1-c, asia-south1-b, asia-south1-a are allowed" + } +} +variable "data_disk_name" { + +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/spot_vm_template/main.tf b/deployments/openTofu/GCP/modules/spot_vm_template/main.tf new file mode 100644 index 00000000..ebec5645 --- /dev/null +++ b/deployments/openTofu/GCP/modules/spot_vm_template/main.tf @@ -0,0 +1,51 @@ +resource "google_compute_instance_template" "new_template" { + name = var.template_name + machine_type = var.machine_type + + network_interface { + network = var.vpc_name # Change this if using a custom VPC + subnetwork = var.snet_name + # network_tier = "STANDARD" + stack_type = "IPV4_ONLY" + } + + service_account { + scopes = [ "cloud-platform" ] + } + + scheduling { + automatic_restart = false + on_host_maintenance = "TERMINATE" + provisioning_model = "SPOT" + preemptible = true + instance_termination_action = "STOP" + } + + disk { + auto_delete = true + boot = true + device_name = var.template_name + source_image = var.os #"projects/ubuntu-os-cloud/global/images/ubuntu-2410-oracular-amd64-v20241115" + mode = var.os_disk_access_mode + type = "pd-balanced" + disk_size_gb = var.os_disk_size + } + + disk { + auto_delete = false + boot = false + device_name = var.data_disk_name + mode = var.data_disk_access_mode + source = var.data_disk_name + } + + shielded_instance_config { + enable_secure_boot = false + enable_vtpm = true + enable_integrity_monitoring = true + } + + reservation_affinity { + type = "ANY_RESERVATION" + } +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/spot_vm_template/output.tf b/deployments/openTofu/GCP/modules/spot_vm_template/output.tf new file mode 100644 index 00000000..2fac01ea --- /dev/null +++ b/deployments/openTofu/GCP/modules/spot_vm_template/output.tf @@ -0,0 +1,3 @@ +output "spot_vm_template_id" { + value = google_compute_instance_template.new_template.id +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/spot_vm_template/variable.tf b/deployments/openTofu/GCP/modules/spot_vm_template/variable.tf new file mode 100644 index 00000000..80fbb30e --- /dev/null +++ b/deployments/openTofu/GCP/modules/spot_vm_template/variable.tf @@ -0,0 +1,27 @@ +variable "vpc_name" { + +} +variable "template_name" { + +} +variable "machine_type" { + +} +variable "snet_name" { + +} +variable "os" { + +} +variable "os_disk_size" { + type = number +} +variable "data_disk_name" { + +} +variable "data_disk_access_mode" { + +} +variable "os_disk_access_mode" { + +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/vpc/firewall/main.tf b/deployments/openTofu/GCP/modules/vpc/firewall/main.tf new file mode 100644 index 00000000..8bd97de5 --- /dev/null +++ b/deployments/openTofu/GCP/modules/vpc/firewall/main.tf @@ -0,0 +1,11 @@ +resource "google_compute_firewall" "allow_ssh" { + name = var.rule_name + network = var.vpc_id + + allow { + protocol = var.protocol_name + ports = var.ports + } + + source_ranges = var.source_ips +} diff --git a/deployments/openTofu/GCP/modules/vpc/firewall/variable.tf b/deployments/openTofu/GCP/modules/vpc/firewall/variable.tf new file mode 100644 index 00000000..ae3fddd4 --- /dev/null +++ b/deployments/openTofu/GCP/modules/vpc/firewall/variable.tf @@ -0,0 +1,15 @@ +variable "vpc_id" { + +} +variable "rule_name" { + +} +variable "protocol_name" { + +} +variable "ports" { + type = list(string) +} +variable "source_ips" { + type = list(string) +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/vpc/main.tf b/deployments/openTofu/GCP/modules/vpc/main.tf new file mode 100644 index 00000000..44a58797 --- /dev/null +++ b/deployments/openTofu/GCP/modules/vpc/main.tf @@ -0,0 +1,4 @@ +resource "google_compute_network" "vpc_network" { + name = var.vpc_name + auto_create_subnetworks = false +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/vpc/output.tf b/deployments/openTofu/GCP/modules/vpc/output.tf new file mode 100644 index 00000000..a073fb58 --- /dev/null +++ b/deployments/openTofu/GCP/modules/vpc/output.tf @@ -0,0 +1,3 @@ +output "vpc_id" { + value = google_compute_network.vpc_network.id +} diff --git a/deployments/openTofu/GCP/modules/vpc/subnet/main.tf b/deployments/openTofu/GCP/modules/vpc/subnet/main.tf new file mode 100644 index 00000000..94473347 --- /dev/null +++ b/deployments/openTofu/GCP/modules/vpc/subnet/main.tf @@ -0,0 +1,6 @@ +resource "google_compute_subnetwork" "subnet" { + name = var.snet_name + ip_cidr_range = var.snet_cidr + region = var.region + network = var.vpc_id +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/vpc/subnet/output.tf b/deployments/openTofu/GCP/modules/vpc/subnet/output.tf new file mode 100644 index 00000000..be9480ae --- /dev/null +++ b/deployments/openTofu/GCP/modules/vpc/subnet/output.tf @@ -0,0 +1,3 @@ +output "snet_id" { + value = google_compute_subnetwork.subnet.id +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/vpc/subnet/variable.tf b/deployments/openTofu/GCP/modules/vpc/subnet/variable.tf new file mode 100644 index 00000000..ca4629fb --- /dev/null +++ b/deployments/openTofu/GCP/modules/vpc/subnet/variable.tf @@ -0,0 +1,12 @@ +variable "snet_name" { + +} +variable "snet_cidr" { + +} +variable "vpc_id" { + +} +variable "region" { + +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/vpc/variable.tf b/deployments/openTofu/GCP/modules/vpc/variable.tf new file mode 100644 index 00000000..71bae38c --- /dev/null +++ b/deployments/openTofu/GCP/modules/vpc/variable.tf @@ -0,0 +1,3 @@ +variable "vpc_name" { + +} From 7f516038862cb4b3ba33c05d5c6e7904ff7f63d4 Mon Sep 17 00:00:00 2001 From: Manoj Hanavadadh Date: Sun, 12 Jan 2025 21:10:39 +0530 Subject: [PATCH 05/12] aws iac updates --- .../AWS/AWS_Readiness/compute/data.tf | 13 -- .../AWS/AWS_Readiness/compute/main.tf | 104 ----------- .../AWS/AWS_Readiness/compute/tofu.tfvars | 7 - .../AWS/AWS_Readiness/databases/data.tf | 20 --- .../AWS/AWS_Readiness/databases/main.tf | 25 --- .../AWS/AWS_Readiness/databases/provider.tf | 31 ---- .../AWS/AWS_Readiness/databases/variable.tf | 4 - .../AWS/AWS_Readiness/network/main.tf | 69 -------- .../AWS/AWS_Readiness/network/provider.tf | 31 ---- .../openTofu/AWS/ODIN_AWS/compute/data.tf | 16 ++ .../openTofu/AWS/ODIN_AWS/compute/main.tf | 164 ++++++++++++++++++ .../openTofu/AWS/ODIN_AWS/compute/odin.tfvars | 9 + .../compute/provider.tf | 17 +- .../compute/variables.tf | 23 ++- deployments/openTofu/AWS/modules/ebs/main.tf | 2 +- deployments/openTofu/AWS/modules/ec2/main.tf | 2 +- .../openTofu/AWS/modules/ec2/output.tf | 7 +- .../openTofu/AWS/modules/ec2SpotFleet/main.tf | 2 +- .../AWS/modules/ec2SpotFleet/output.tf | 3 + .../AWS/modules/ec2SpotFleet/variable.tf | 3 + 20 files changed, 226 insertions(+), 326 deletions(-) delete mode 100644 deployments/openTofu/AWS/AWS_Readiness/compute/data.tf delete mode 100644 deployments/openTofu/AWS/AWS_Readiness/compute/main.tf delete mode 100644 deployments/openTofu/AWS/AWS_Readiness/compute/tofu.tfvars delete mode 100644 deployments/openTofu/AWS/AWS_Readiness/databases/data.tf delete mode 100644 deployments/openTofu/AWS/AWS_Readiness/databases/main.tf delete mode 100644 deployments/openTofu/AWS/AWS_Readiness/databases/provider.tf delete mode 100644 deployments/openTofu/AWS/AWS_Readiness/databases/variable.tf delete mode 100644 deployments/openTofu/AWS/AWS_Readiness/network/main.tf delete mode 100644 deployments/openTofu/AWS/AWS_Readiness/network/provider.tf create mode 100644 deployments/openTofu/AWS/ODIN_AWS/compute/data.tf create mode 100644 deployments/openTofu/AWS/ODIN_AWS/compute/main.tf create mode 100644 deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars rename deployments/openTofu/AWS/{AWS_Readiness => ODIN_AWS}/compute/provider.tf (50%) rename deployments/openTofu/AWS/{AWS_Readiness => ODIN_AWS}/compute/variables.tf (51%) create mode 100644 deployments/openTofu/AWS/modules/ec2SpotFleet/output.tf diff --git a/deployments/openTofu/AWS/AWS_Readiness/compute/data.tf b/deployments/openTofu/AWS/AWS_Readiness/compute/data.tf deleted file mode 100644 index 04b9c6bc..00000000 --- a/deployments/openTofu/AWS/AWS_Readiness/compute/data.tf +++ /dev/null @@ -1,13 +0,0 @@ -data "aws_vpc" "vpc" { - filter { - name = "tag:Name" - values = ["valnix-vpc-useast-1"] - } -} - -data "aws_subnet" "compute_subnet" { - filter { - name = "tag:Name" - values = ["snet-compute-01"] - } -} \ No newline at end of file diff --git a/deployments/openTofu/AWS/AWS_Readiness/compute/main.tf b/deployments/openTofu/AWS/AWS_Readiness/compute/main.tf deleted file mode 100644 index c8d1f23b..00000000 --- a/deployments/openTofu/AWS/AWS_Readiness/compute/main.tf +++ /dev/null @@ -1,104 +0,0 @@ -module "security_group" { - source = "../../modules/vpc/securityGroups" - - security_grp_name = "SSH_Inbound" - vpc_id = data.aws_vpc.vpc.id -} - -# resource "aws_network_interface" "my_network_interface" { -# subnet_id = module.subnet.subnet_id -# private_ips = ["10.0.1.10"] - -module "key_Pair" { - source = "../../modules/keyPair" - - key_pair_name = var.key_pair_name -} - -# module "ec2" { -# source = "../../modules/ec2" -# deploy = var.spot_instance == false ? false : true - -# instance_type = "t3.micro" -# ami = "ami-0866a3c8686eaeeba" -# security_group_ids = [module.security_group.sg_id] -# subnet_id = module.subnet.subnet_id -# # nic_id = aws_network_interface.my_network_interface.id -# key_pair_name = module.key_Pair.aws_key_pair_name -# associate_pip = true -# } - -# module "ec2_spot" { -# source = "../../modules/ec2SpotInstance" -# deploy = var.spot_instance == true ? true : false - -# instance_type = "t3.micro" # use only m5, c5, r5, t3, and z1d faily vms -# ami = "ami-0866a3c8686eaeeba" -# spot_price = "0.03" -# spot_type = "persistent" -# security_group_ids = module.security_group.sg_id -# subnet_id = module.subnet.subnet_id -# key_pair_name = module.key_Pair.aws_key_pair_name -# } - -module "ebs" { - source = "../../modules/ebs" - - ebs_name = "valnix_ebs" - ebs_size = var.ebs_size - ec2_availability_zone = "us-east-1a" #module.ec2_spot.spot_ec2_availability_zone - multi_attach_enabled = var.multi_attach_enabled - ebs_type = "gp3" - ebs_iops = 3000 - snapshot_id = "snap-0daa1ed513204e62f" -} - -module "ec2_spot_fleet" { - source = "../../modules/ec2SpotFleet" - - ami_id = "ami-010e773a908e799c1" - instance_types = ["c5.xlarge", "m5.large", "t3.large"] - key_Pair = module.key_Pair.aws_key_pair_name - subnet_id = data.aws_subnet.compute_subnet.id - availability_zone = module.ebs.ebs_availability_zone#data.aws_subnet.compute_subnet.availability_zone - associate_pip = true - security_group_ids = [ module.security_group.sg_id ] -} - -# module "ebs_vol_attach" { -# source = "../../modules/ebs/ebs_volume_attach" - -# ec2_id = var.spot_instance == true ? aws_spot_fleet_request.example.id : "" -# volume_id = module.ebs.ebs_id -# depends_on = [ aws_spot_fleet_request.example ] - -# } - -# module "efs" { -# source = "../../modules/efs" - -# security_group_id = module.security_group.sg_id -# subnet_id = module.subnet.subnet_id -# } - -# resource "null_resource" "configure_nfs" { -# connection { -# type = "ssh" -# user = "ubuntu" -# private_key = module.key_Pair.aws_key_pem -# host = var.spot_instance == true ? module.ec2_spot.spot_ec2_pip : module.ec2.ec2_public_ip -# } -# provisioner "remote-exec" { -# inline = [ - -# "sudo apt-get update -y", -# "sudo mkdir -p /mnt/nixstore", -# "sudo mount -t efs -o tls,accesspoint=${module.efs.access_point_id} ${module.efs.efs_id}:/ ${var.access_point_mount_point}" -# ] -# } -# } - -# c7a.xlarge -# m5.large -# t3.large -# c5.xlarge \ No newline at end of file diff --git a/deployments/openTofu/AWS/AWS_Readiness/compute/tofu.tfvars b/deployments/openTofu/AWS/AWS_Readiness/compute/tofu.tfvars deleted file mode 100644 index af405c06..00000000 --- a/deployments/openTofu/AWS/AWS_Readiness/compute/tofu.tfvars +++ /dev/null @@ -1,7 +0,0 @@ -location = "us-east-1" -key_pair_name = "ec2_key_pair" -access_point_mount_point = "/mnt/nixstore" -spot_instance = false - -ebs_size = 30 -multi_attach_enabled = false \ No newline at end of file diff --git a/deployments/openTofu/AWS/AWS_Readiness/databases/data.tf b/deployments/openTofu/AWS/AWS_Readiness/databases/data.tf deleted file mode 100644 index 07a4b981..00000000 --- a/deployments/openTofu/AWS/AWS_Readiness/databases/data.tf +++ /dev/null @@ -1,20 +0,0 @@ -data "aws_vpc" "vpc" { - filter { - name = "tag:Name" - values = ["valnix-vpc-useast-1"] - } -} - -data "aws_subnet" "db_subnet01" { - filter { - name = "tag:Name" - values = ["snet-db-01"] - } -} - -data "aws_subnet" "db_subnet02" { - filter { - name = "tag:Name" - values = ["snet-db-02"] - } -} \ No newline at end of file diff --git a/deployments/openTofu/AWS/AWS_Readiness/databases/main.tf b/deployments/openTofu/AWS/AWS_Readiness/databases/main.tf deleted file mode 100644 index 253c266a..00000000 --- a/deployments/openTofu/AWS/AWS_Readiness/databases/main.tf +++ /dev/null @@ -1,25 +0,0 @@ -module "security_group" { - source = "../../modules/vpc/securityGroups" - - security_grp_name = "DB_Inbound" - vpc_id = data.aws_vpc.vpc.id -} - -module "rds" { - source = "../../modules/rds" - - db_instance_name = "valnix-rds-01" - rds_engine = "postgres" - engine_version = "16.1" - db_compute_instance = "db.t3.micro" - skip_create_final_snapshot = true - db_name = "test" - db_password = "DafaqsGoinon123" - db_username = "iamadmin" - subnet_ids = [ data.aws_subnet.db_subnet01.id, data.aws_subnet.db_subnet02.id ] - security_group_ids = [ module.security_group.sg_id ] - multi_availability_zones = false - allocated_storage = 100 - - db_subnet_group_name = "valnix-rds-subnet-group" -} \ No newline at end of file diff --git a/deployments/openTofu/AWS/AWS_Readiness/databases/provider.tf b/deployments/openTofu/AWS/AWS_Readiness/databases/provider.tf deleted file mode 100644 index 11a274a6..00000000 --- a/deployments/openTofu/AWS/AWS_Readiness/databases/provider.tf +++ /dev/null @@ -1,31 +0,0 @@ -terraform { - backend "s3" { - bucket = "valnix-terraform-state-bucket" - key = "AWS_Readiness/database/database01.tfstate" - region = "us-east-1" - dynamodb_table = "tf-backend" - encrypt = true - } - - required_providers { - aws = { - source = "hashicorp/aws" - version = "~> 4.0" - } - time = { - source = "hashicorp/time" - version = "~> 0.9" - } - } - - required_version = ">= 1.0" -} - -provider "aws" { - region = var.location - access_key = "" - secret_key = "" - # assume_role { - # role_arn = "arn:aws:iam::775188627313:user/manoj_ha" - # } -} diff --git a/deployments/openTofu/AWS/AWS_Readiness/databases/variable.tf b/deployments/openTofu/AWS/AWS_Readiness/databases/variable.tf deleted file mode 100644 index e82997fc..00000000 --- a/deployments/openTofu/AWS/AWS_Readiness/databases/variable.tf +++ /dev/null @@ -1,4 +0,0 @@ -variable "location" { - type = string - default = "us-east-1" -} \ No newline at end of file diff --git a/deployments/openTofu/AWS/AWS_Readiness/network/main.tf b/deployments/openTofu/AWS/AWS_Readiness/network/main.tf deleted file mode 100644 index a95275af..00000000 --- a/deployments/openTofu/AWS/AWS_Readiness/network/main.tf +++ /dev/null @@ -1,69 +0,0 @@ -module "vpc" { - source = "../../modules/vpc" - - vpc_name = "valnix-vpc-useast-1" - vpc_address_block = "10.0.0.0/16" -} - -module "compute_subnet" { - source = "../../modules/vpc/subnet" - - subnet_name = "snet-compute-01" - vpc_id = module.vpc.vpc_id - snet_availability_zone = "us-east-1a" - snet_cidr = "10.0.0.0/24" - map_public_ip_on_launch = true -} - -module "db_subnet01" { - source = "../../modules/vpc/subnet" - - subnet_name = "snet-db-01" - vpc_id = module.vpc.vpc_id - snet_availability_zone = "us-east-1a" - snet_cidr = "10.0.1.0/24" - map_public_ip_on_launch = true -} - -module "db_subnet02" { - source = "../../modules/vpc/subnet" - - subnet_name = "snet-db-02" - vpc_id = module.vpc.vpc_id - snet_availability_zone = "us-east-1b" - snet_cidr = "10.0.2.0/24" - map_public_ip_on_launch = true -} - -module "internet_gateway" { - source = "../../modules/vpc/internetGateway" - - vpc_id = module.vpc.vpc_id -} - -module "compute_route_table" { - source = "../../modules/vpc/routeTable" - - route_table = "compute-route-01" - vpc_id = module.vpc.vpc_id - subnet_id = module.compute_subnet.subnet_id - internet_gateway_id = module.internet_gateway.internet_gateway_id -} - -module "db_route_table01" { - source = "../../modules/vpc/routeTable" - - route_table = "db-route-01" - vpc_id = module.vpc.vpc_id - subnet_id = module.db_subnet01.subnet_id - internet_gateway_id = module.internet_gateway.internet_gateway_id -} - -module "db_route_table02" { - source = "../../modules/vpc/routeTable" - - route_table = "db-route-02" - vpc_id = module.vpc.vpc_id - subnet_id = module.db_subnet02.subnet_id - internet_gateway_id = module.internet_gateway.internet_gateway_id -} \ No newline at end of file diff --git a/deployments/openTofu/AWS/AWS_Readiness/network/provider.tf b/deployments/openTofu/AWS/AWS_Readiness/network/provider.tf deleted file mode 100644 index d98cb8f6..00000000 --- a/deployments/openTofu/AWS/AWS_Readiness/network/provider.tf +++ /dev/null @@ -1,31 +0,0 @@ -terraform { - backend "s3" { - bucket = "valnix-terraform-state-bucket" - key = "AWS_Readiness/network/network01.tfstate" - region = "us-east-1" - dynamodb_table = "tf-backend" - encrypt = true - } - - required_providers { - aws = { - source = "hashicorp/aws" - version = "~> 4.0" - } - time = { - source = "hashicorp/time" - version = "~> 0.9" - } - } - - required_version = ">= 1.0" -} - -provider "aws" { - region = "us-east-1" - access_key = "" - secret_key = "" - # assume_role { - # role_arn = "arn:aws:iam::775188627313:user/manoj_ha" - # } -} \ No newline at end of file diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/data.tf b/deployments/openTofu/AWS/ODIN_AWS/compute/data.tf new file mode 100644 index 00000000..90889f10 --- /dev/null +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/data.tf @@ -0,0 +1,16 @@ +# data "aws_vpc" "vpc" { +# filter { +# name = "tag:Name" +# values = ["valnix-vpc-useast-1"] +# } +# } + +# data "aws_subnet" "compute_subnet" { +# filter { +# name = "tag:Name" +# values = ["snet-compute-01"] +# } +# } +data "aws_iam_role" "spot-fleet" { + name = "AWSServiceRoleForEC2SpotFleet" +} \ No newline at end of file diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf b/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf new file mode 100644 index 00000000..c3b6dfc1 --- /dev/null +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf @@ -0,0 +1,164 @@ +module "vpc" { + source = "../../modules/vpc" + + vpc_name = "valnix-vpc-useast-1" + vpc_address_block = "10.0.0.0/16" +} + +module "compute_subnet" { + source = "../../modules/vpc/subnet" + + subnet_name = "snet-compute-01" + vpc_id = module.vpc.vpc_id + snet_availability_zone = var.snet_availability_zone1 + snet_cidr = "10.0.0.0/24" + map_public_ip_on_launch = true +} + +module "db_subnet01" { + source = "../../modules/vpc/subnet" + + subnet_name = "snet-db-01" + vpc_id = module.vpc.vpc_id + snet_availability_zone = var.snet_availability_zone1 + snet_cidr = "10.0.1.0/24" + map_public_ip_on_launch = true +} + +module "db_subnet02" { + source = "../../modules/vpc/subnet" + + subnet_name = "snet-db-02" + vpc_id = module.vpc.vpc_id + snet_availability_zone = var.snet_availability_zone2 + snet_cidr = "10.0.2.0/24" + map_public_ip_on_launch = true +} + +module "internet_gateway" { + source = "../../modules/vpc/internetGateway" + + vpc_id = module.vpc.vpc_id +} + +module "compute_route_table" { + source = "../../modules/vpc/routeTable" + + route_table = "compute-route-01" + vpc_id = module.vpc.vpc_id + subnet_id = module.compute_subnet.subnet_id + internet_gateway_id = module.internet_gateway.internet_gateway_id +} + +module "db_route_table01" { + source = "../../modules/vpc/routeTable" + + route_table = "db-route-01" + vpc_id = module.vpc.vpc_id + subnet_id = module.db_subnet01.subnet_id + internet_gateway_id = module.internet_gateway.internet_gateway_id +} + +module "db_route_table02" { + source = "../../modules/vpc/routeTable" + + route_table = "db-route-02" + vpc_id = module.vpc.vpc_id + subnet_id = module.db_subnet02.subnet_id + internet_gateway_id = module.internet_gateway.internet_gateway_id +} + + + + + + +module "ssh_security_group" { + source = "../../modules/vpc/securityGroups" + + security_grp_name = "SSH_Inbound" + vpc_id = module.vpc.vpc_id +} + +# resource "aws_network_interface" "my_network_interface" { +# subnet_id = module.subnet.subnet_id +# private_ips = ["10.0.1.10"] + +module "key_Pair" { + source = "../../modules/keyPair" + + key_pair_name = var.key_pair_name +} + +module "ec2" { + source = "../../modules/ec2" + deploy = true + + instance_type = "t3.micro" + ami = "ami-0866a3c8686eaeeba" + security_group_ids = [module.ssh_security_group.sg_id] + subnet_id = module.compute_subnet.subnet_id + # nic_id = aws_network_interface.my_network_interface.id + key_pair_name = module.key_Pair.aws_key_pair_name + associate_pip = true +} + +module "ebs" { + source = "../../modules/ebs" + + ebs_name = "valnix_ebs" + ebs_size = var.ebs_size + ec2_availability_zone = module.ec2.ec2_availability_zone + multi_attach_enabled = var.multi_attach_enabled + ebs_type = var.ebs_type + ebs_iops = var.ebs_iops + snapshot_id = var.shared_nix_store_id #"snap-0daa1ed513204e62f" +} + +module "ec2_spot_fleet" { + source = "../../modules/ec2SpotFleet" + + aws_arn = data.aws_iam_role.spot-fleet.arn + ami_id = "ami-0866a3c8686eaeeba" + instance_types = ["c5.xlarge", "m5.large", "t3.large"] + key_Pair = module.key_Pair.aws_key_pair_name + subnet_id = module.compute_subnet.subnet_id + availability_zone = module.ebs.ebs_availability_zone#data.aws_subnet.compute_subnet.availability_zone + associate_pip = true + security_group_ids = [ module.ssh_security_group.sg_id ] +} + +module "server_ebs_vol_attach" { + source = "../../modules/ebs/ebs_volume_attach" + + ec2_id = module.ec2_spot_fleet.spot_fleet_id + volume_id = module.ebs.ebs_id + depends_on = [ module.ec2_spot_fleet ] +} + + +module "db_security_group" { + source = "../../modules/vpc/securityGroups" + + security_grp_name = "DB_Inbound" + vpc_id = module.vpc.vpc_id +} + +module "rds" { + source = "../../modules/rds" + + db_instance_name = "odinstagingserver" + rds_engine = "postgres" + engine_version = "16.3" + db_compute_instance = "db.t3.micro" + skip_create_final_snapshot = true + db_name = "odinstagingdb" + db_password = "9hsdu392jk21n" + db_username = "odinadmin" + subnet_ids = [ module.db_subnet01.subnet_id, module.db_subnet02.subnet_id ] + security_group_ids = [ module.db_security_group.sg_id ] + multi_availability_zones = false + allocated_storage = 10 + + db_subnet_group_name = "valnix-rds-subnet-group" +} \ No newline at end of file diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars b/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars new file mode 100644 index 00000000..8f755124 --- /dev/null +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars @@ -0,0 +1,9 @@ +location = "us-east-1" +snet_availability_zone1 = "us-east-1a" +snet_availability_zone2 = "us-east-1b" +key_pair_name = "ec2_key_pair" + +ebs_size = 30 +multi_attach_enabled = true +ebs_iops = 1000 +ebs_type = "io1" \ No newline at end of file diff --git a/deployments/openTofu/AWS/AWS_Readiness/compute/provider.tf b/deployments/openTofu/AWS/ODIN_AWS/compute/provider.tf similarity index 50% rename from deployments/openTofu/AWS/AWS_Readiness/compute/provider.tf rename to deployments/openTofu/AWS/ODIN_AWS/compute/provider.tf index bd19e42f..db0621a6 100644 --- a/deployments/openTofu/AWS/AWS_Readiness/compute/provider.tf +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/provider.tf @@ -1,11 +1,11 @@ terraform { - backend "s3" { - bucket = "valnix-terraform-state-bucket" - key = "AWS_Readiness/compute/compute01.tfstate" - region = "us-east-1" - dynamodb_table = "tf-backend" - encrypt = true - } + # backend "s3" {} + # bucket = "valnix-terraform-state-bucket" + # key = "AWS_Readiness/compute/compute01.tfstate" + # region = "us-east-1" + # dynamodb_table = "tf-backend" + # encrypt = true + # } required_providers { aws = { @@ -25,7 +25,4 @@ provider "aws" { region = var.location access_key = "" secret_key = "" - # assume_role { - # role_arn = "arn:aws:iam::775188627313:user/manoj_ha" - # } } \ No newline at end of file diff --git a/deployments/openTofu/AWS/AWS_Readiness/compute/variables.tf b/deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf similarity index 51% rename from deployments/openTofu/AWS/AWS_Readiness/compute/variables.tf rename to deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf index 38f93587..de069eca 100644 --- a/deployments/openTofu/AWS/AWS_Readiness/compute/variables.tf +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf @@ -1,22 +1,31 @@ variable "location" { type = string } +variable "snet_availability_zone1" { + type = string +} +variable "snet_availability_zone2" { + type = string +} # variable "security_groups" { # type = list(string) # } -variable "spot_instance" { - type = bool -} variable "key_pair_name" { type = string } -variable "access_point_mount_point" { - type = string -} - variable "ebs_size" { type = number } variable "multi_attach_enabled" { type = bool +} +variable "ebs_type" { + type = string +} +variable "ebs_iops" { + type = number +} +variable "shared_nix_store_id" { + type = string + default = "" } \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/ebs/main.tf b/deployments/openTofu/AWS/modules/ebs/main.tf index 85c76b5d..4af6e08f 100644 --- a/deployments/openTofu/AWS/modules/ebs/main.tf +++ b/deployments/openTofu/AWS/modules/ebs/main.tf @@ -4,7 +4,7 @@ resource "aws_ebs_volume" "ebs" { multi_attach_enabled = var.multi_attach_enabled type = var.ebs_type iops = var.ebs_iops - snapshot_id = var.snapshot_id + snapshot_id = ""#var.snapshot_id tags = { Name = var.ebs_name diff --git a/deployments/openTofu/AWS/modules/ec2/main.tf b/deployments/openTofu/AWS/modules/ec2/main.tf index fcdb8aca..c98c6297 100644 --- a/deployments/openTofu/AWS/modules/ec2/main.tf +++ b/deployments/openTofu/AWS/modules/ec2/main.tf @@ -1,6 +1,6 @@ resource "aws_instance" "ec2" { - count = var.deploy == false ? 1 : 0 + count = var.deploy == true ? 1 : 0 ami = var.ami instance_type = var.instance_type vpc_security_group_ids = var.security_group_ids diff --git a/deployments/openTofu/AWS/modules/ec2/output.tf b/deployments/openTofu/AWS/modules/ec2/output.tf index b375d30c..b5b4e9bd 100644 --- a/deployments/openTofu/AWS/modules/ec2/output.tf +++ b/deployments/openTofu/AWS/modules/ec2/output.tf @@ -1,6 +1,9 @@ output "ec2_public_ip" { - value = var.deploy == false ? aws_instance.ec2[0].public_ip : 0 + value = var.deploy == true ? aws_instance.ec2[0].public_ip : 0 } output "ec2_id" { - value = var.deploy == false ? aws_instance.ec2[0].id : 0 + value = var.deploy == true ? aws_instance.ec2[0].id : 0 +} +output "ec2_availability_zone" { + value = aws_instance.ec2[0].availability_zone } \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf b/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf index ddd7ecea..7c3dd0d2 100644 --- a/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf +++ b/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf @@ -1,5 +1,5 @@ resource "aws_spot_fleet_request" "example" { - iam_fleet_role = "arn:aws:iam::775188627313:role/aws-service-role/spotfleet.amazonaws.com/AWSServiceRoleForEC2SpotFleet" + iam_fleet_role = var.aws_arn target_capacity = 1 terminate_instances_on_delete = true diff --git a/deployments/openTofu/AWS/modules/ec2SpotFleet/output.tf b/deployments/openTofu/AWS/modules/ec2SpotFleet/output.tf new file mode 100644 index 00000000..55fdd3be --- /dev/null +++ b/deployments/openTofu/AWS/modules/ec2SpotFleet/output.tf @@ -0,0 +1,3 @@ +output "spot_fleet_id" { + value = aws_spot_fleet_request.example.id +} \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/ec2SpotFleet/variable.tf b/deployments/openTofu/AWS/modules/ec2SpotFleet/variable.tf index cab20a1d..d5314d95 100644 --- a/deployments/openTofu/AWS/modules/ec2SpotFleet/variable.tf +++ b/deployments/openTofu/AWS/modules/ec2SpotFleet/variable.tf @@ -18,4 +18,7 @@ variable "security_group_ids" { } variable "ami_id" { type = string +} +variable "aws_arn" { + type = string } \ No newline at end of file From 6ad32866188887eb189d3af98cd9d824aa0a62d0 Mon Sep 17 00:00:00 2001 From: Manoj Hanavadadh Date: Sun, 12 Jan 2025 21:15:16 +0530 Subject: [PATCH 06/12] aws variables updates --- .../openTofu/AWS/ODIN_AWS/compute/main.tf | 42 +++++++++---------- .../openTofu/AWS/ODIN_AWS/compute/odin.tfvars | 15 ++++--- .../AWS/ODIN_AWS/compute/variables.tf | 8 +++- 3 files changed, 37 insertions(+), 28 deletions(-) diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf b/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf index c3b6dfc1..d41f687c 100644 --- a/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf @@ -1,17 +1,17 @@ module "vpc" { source = "../../modules/vpc" - vpc_name = "valnix-vpc-useast-1" + vpc_name = "valnix-vpc-useast-1" vpc_address_block = "10.0.0.0/16" } module "compute_subnet" { source = "../../modules/vpc/subnet" - subnet_name = "snet-compute-01" - vpc_id = module.vpc.vpc_id - snet_availability_zone = var.snet_availability_zone1 - snet_cidr = "10.0.0.0/24" + subnet_name = "snet-compute-01" + vpc_id = module.vpc.vpc_id + snet_availability_zone = var.snet_availability_zone1 + snet_cidr = "10.0.0.0/24" map_public_ip_on_launch = true } @@ -94,7 +94,7 @@ module "ec2" { source = "../../modules/ec2" deploy = true - instance_type = "t3.micro" + instance_type = var.ec2_instance_type ami = "ami-0866a3c8686eaeeba" security_group_ids = [module.ssh_security_group.sg_id] subnet_id = module.compute_subnet.subnet_id @@ -118,22 +118,22 @@ module "ebs" { module "ec2_spot_fleet" { source = "../../modules/ec2SpotFleet" - aws_arn = data.aws_iam_role.spot-fleet.arn - ami_id = "ami-0866a3c8686eaeeba" - instance_types = ["c5.xlarge", "m5.large", "t3.large"] - key_Pair = module.key_Pair.aws_key_pair_name - subnet_id = module.compute_subnet.subnet_id - availability_zone = module.ebs.ebs_availability_zone#data.aws_subnet.compute_subnet.availability_zone - associate_pip = true - security_group_ids = [ module.ssh_security_group.sg_id ] + aws_arn = data.aws_iam_role.spot-fleet.arn + ami_id = "ami-0866a3c8686eaeeba" + instance_types = ["c5.xlarge", "m5.large", "t3.large"] + key_Pair = module.key_Pair.aws_key_pair_name + subnet_id = module.compute_subnet.subnet_id + availability_zone = module.ebs.ebs_availability_zone #data.aws_subnet.compute_subnet.availability_zone + associate_pip = true + security_group_ids = [module.ssh_security_group.sg_id] } module "server_ebs_vol_attach" { source = "../../modules/ebs/ebs_volume_attach" - ec2_id = module.ec2_spot_fleet.spot_fleet_id - volume_id = module.ebs.ebs_id - depends_on = [ module.ec2_spot_fleet ] + ec2_id = module.ec2_spot_fleet.spot_fleet_id + volume_id = module.ebs.ebs_id + depends_on = [module.ec2_spot_fleet] } @@ -149,14 +149,14 @@ module "rds" { db_instance_name = "odinstagingserver" rds_engine = "postgres" - engine_version = "16.3" - db_compute_instance = "db.t3.micro" + engine_version = "16.3" + db_compute_instance = var.rds_compute_type skip_create_final_snapshot = true db_name = "odinstagingdb" db_password = "9hsdu392jk21n" db_username = "odinadmin" - subnet_ids = [ module.db_subnet01.subnet_id, module.db_subnet02.subnet_id ] - security_group_ids = [ module.db_security_group.sg_id ] + subnet_ids = [module.db_subnet01.subnet_id, module.db_subnet02.subnet_id] + security_group_ids = [module.db_security_group.sg_id] multi_availability_zones = false allocated_storage = 10 diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars b/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars index 8f755124..e7f86ba3 100644 --- a/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars @@ -1,9 +1,12 @@ -location = "us-east-1" -snet_availability_zone1 = "us-east-1a" -snet_availability_zone2 = "us-east-1b" -key_pair_name = "ec2_key_pair" +location = "us-east-1" +snet_availability_zone1 = "us-east-1a" +snet_availability_zone2 = "us-east-1b" +key_pair_name = "ec2_key_pair" ebs_size = 30 multi_attach_enabled = true -ebs_iops = 1000 -ebs_type = "io1" \ No newline at end of file +ebs_iops = 1000 +ebs_type = "io1" + +ec2_instance_type = "t3.micro" +rds_compute_type = "db.t3.micro" \ No newline at end of file diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf b/deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf index de069eca..a073b70b 100644 --- a/deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf @@ -26,6 +26,12 @@ variable "ebs_iops" { type = number } variable "shared_nix_store_id" { - type = string + type = string default = "" +} +variable "ec2_instance_type" { + type = string +} +variable "rds_compute_type" { + type = string } \ No newline at end of file From 9ee01aaf264e8aec06293431b96e40095d89742c Mon Sep 17 00:00:00 2001 From: Manoj Hanavadadh Date: Sun, 12 Jan 2025 21:18:03 +0530 Subject: [PATCH 07/12] ebs size updates --- deployments/openTofu/AWS/ODIN_AWS/compute/main.tf | 2 +- deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars | 2 +- deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf b/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf index d41f687c..59883e5a 100644 --- a/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf @@ -106,7 +106,7 @@ module "ec2" { module "ebs" { source = "../../modules/ebs" - ebs_name = "valnix_ebs" + ebs_name = "shared_nix_store" ebs_size = var.ebs_size ec2_availability_zone = module.ec2.ec2_availability_zone multi_attach_enabled = var.multi_attach_enabled diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars b/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars index e7f86ba3..75cee859 100644 --- a/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars @@ -3,7 +3,7 @@ snet_availability_zone1 = "us-east-1a" snet_availability_zone2 = "us-east-1b" key_pair_name = "ec2_key_pair" -ebs_size = 30 +ebs_size = 80 multi_attach_enabled = true ebs_iops = 1000 ebs_type = "io1" diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf b/deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf index a073b70b..06d9e9f9 100644 --- a/deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/variables.tf @@ -15,6 +15,7 @@ variable "key_pair_name" { } variable "ebs_size" { type = number + default = 80 } variable "multi_attach_enabled" { type = bool From 0044fd45dc238509adfb831b044776012c730963 Mon Sep 17 00:00:00 2001 From: Manoj Hanavadadh Date: Sun, 12 Jan 2025 21:22:00 +0530 Subject: [PATCH 08/12] aws ec2 names updates --- deployments/openTofu/AWS/modules/ec2/main.tf | 3 +++ deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/deployments/openTofu/AWS/modules/ec2/main.tf b/deployments/openTofu/AWS/modules/ec2/main.tf index c98c6297..09e87999 100644 --- a/deployments/openTofu/AWS/modules/ec2/main.tf +++ b/deployments/openTofu/AWS/modules/ec2/main.tf @@ -12,4 +12,7 @@ resource "aws_instance" "ec2" { # } key_name = var.key_pair_name associate_public_ip_address = var.associate_pip + tags = { + Name = Odin-server + } } \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf b/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf index 7c3dd0d2..a8793fb6 100644 --- a/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf +++ b/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf @@ -45,7 +45,7 @@ resource "aws_spot_fleet_request" "example" { } tags = { - Name = "valnix-spot-fleet" + Name = "valnix-worker" } } From d011938a52647efca305161dbff97d3f5c7dfa5b Mon Sep 17 00:00:00 2001 From: Manoj Hanavadadh Date: Sun, 12 Jan 2025 22:56:28 +0530 Subject: [PATCH 09/12] gcp updates --- .../openTofu/GCP/ODIN_GCP/compute/data.tf | 3 + .../openTofu/GCP/ODIN_GCP/compute/main.tf | 105 ++++++++++++++++++ .../openTofu/GCP/ODIN_GCP/compute/odin.tfvars | 10 ++ .../compute/provider.tf | 13 +-- .../openTofu/GCP/ODIN_GCP/compute/variable.tf | 24 ++++ .../GCP/gcp_readiness/compute/data.tf | 23 ---- .../GCP/gcp_readiness/compute/main.tf | 51 --------- .../GCP/gcp_readiness/network/main.tf | 52 --------- .../GCP/gcp_readiness/network/provider.tf | 23 ---- .../GCP/modules/spot_vm_template/main.tf | 24 +++- .../GCP/modules/spot_vm_template/output.tf | 2 +- .../GCP/modules/spot_vm_template/variable.tf | 3 + 12 files changed, 175 insertions(+), 158 deletions(-) create mode 100644 deployments/openTofu/GCP/ODIN_GCP/compute/data.tf create mode 100644 deployments/openTofu/GCP/ODIN_GCP/compute/main.tf create mode 100644 deployments/openTofu/GCP/ODIN_GCP/compute/odin.tfvars rename deployments/openTofu/GCP/{gcp_readiness => ODIN_GCP}/compute/provider.tf (52%) create mode 100644 deployments/openTofu/GCP/ODIN_GCP/compute/variable.tf delete mode 100644 deployments/openTofu/GCP/gcp_readiness/compute/data.tf delete mode 100644 deployments/openTofu/GCP/gcp_readiness/compute/main.tf delete mode 100644 deployments/openTofu/GCP/gcp_readiness/network/main.tf delete mode 100644 deployments/openTofu/GCP/gcp_readiness/network/provider.tf diff --git a/deployments/openTofu/GCP/ODIN_GCP/compute/data.tf b/deployments/openTofu/GCP/ODIN_GCP/compute/data.tf new file mode 100644 index 00000000..a7d12baa --- /dev/null +++ b/deployments/openTofu/GCP/ODIN_GCP/compute/data.tf @@ -0,0 +1,3 @@ +data "google_service_account" "svc_acc" { + account_id = "valk_user1" +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/ODIN_GCP/compute/main.tf b/deployments/openTofu/GCP/ODIN_GCP/compute/main.tf new file mode 100644 index 00000000..732b0631 --- /dev/null +++ b/deployments/openTofu/GCP/ODIN_GCP/compute/main.tf @@ -0,0 +1,105 @@ +module "vpc" { + source = "../../modules/vpc" + + vpc_name = "valkyrie-vpc" +} + +module "worker_subnet" { + source = "../../modules/vpc/subnet" + + snet_name = "valkyrie-worker-snet" + snet_cidr = "10.0.0.0/22" + region = var.location + vpc_id = module.vpc.vpc_id +} + +module "server_subnet" { + source = "../../modules/vpc/subnet" + + snet_name = "valkyrie-server-snet" + snet_cidr = "10.0.4.0/22" + region = var.location + vpc_id = module.vpc.vpc_id +} + +module "db_subnet" { + source = "../../modules/vpc/subnet" + + snet_name = "valkyrie-db-snet" + snet_cidr = "10.0.8.0/22" + region = var.location + vpc_id = module.vpc.vpc_id +} + +module "ssh_firewall" { + source = "../../modules/vpc/firewall" + + vpc_id = module.vpc.vpc_id + rule_name = "allow-ssh" + ports = [ "22" ] + protocol_name = "tcp" + source_ips = ["0.0.0.0/0"] +} + +module "db_firewall" { + source = "../../modules/vpc/firewall" + + vpc_id = module.vpc.vpc_id + rule_name = "allow-db" + ports = [ "5432" ] + protocol_name = "tcp" + source_ips = ["0.0.0.0/0"] +} + +module "persistant_disk" { + source = "../../modules/persistant_disk" + + disk_name = "shared-nix-store" + disk_size_gb = var.disk_size_gb + disk_type = "pd-balanced" + project_name = var.project_name + zone_name = var.availability_zone + disk_iops = var.disk_iops + disk_throughput = var.disk_throughput +} + +module "server_vm" { + source = "../../modules/compute_engine" + + vm_name = "odin-server" + os_image = "projects/ubuntu-os-cloud/global/images/ubuntu-2410-oracular-amd64-v20241115" + os_disk_size = 10 + os_disk_type = "pd-standard" + + disk_id = module.persistant_disk.disk_id + disk_name = module.persistant_disk.disk_name + + machine_type = var.server_machine_type + snet_id = module.server_subnet.snet_id + +} + +module "spot_vm_template" { + source = "../../modules/spot_vm_template" + + template_name = "odin-worker-template" + vpc_name = module.vpc.vpc_id + snet_name = module.worker_subnet.snet_id + machine_type = var.worker_machine_type + os = "projects/ubuntu-os-cloud/global/images/ubuntu-2410-oracular-amd64-v20241115" + os_disk_size = 10 + os_disk_access_mode = "READ_WRITE" + data_disk_name = module.persistant_disk.disk_name + data_disk_access_mode = "READ_ONLY" + service_account_email = data.google_service_account.svc_acc.email +} + +module "spot_mig" { + source = "../../modules/spot_MIG" + + mig_name = "odin-worker" + mig_target_size = 1 + vm_template_id = module.spot_vm_template.spot_vm_template_id + data_disk_name = module.persistant_disk.disk_name + zone_name = var.availability_zone +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/ODIN_GCP/compute/odin.tfvars b/deployments/openTofu/GCP/ODIN_GCP/compute/odin.tfvars new file mode 100644 index 00000000..9e9c88a5 --- /dev/null +++ b/deployments/openTofu/GCP/ODIN_GCP/compute/odin.tfvars @@ -0,0 +1,10 @@ +location = "asia-south1" +availability_zone = "asia-south1-c" +project_name = "valkyrie-project" + +worker_machine_type = "n2-custom-4-8192" +server_machine_type = "n2-custom-4-4096" + +disk_iops = 3500 +disk_size_gb = 80 +disk_throughput = 300 \ No newline at end of file diff --git a/deployments/openTofu/GCP/gcp_readiness/compute/provider.tf b/deployments/openTofu/GCP/ODIN_GCP/compute/provider.tf similarity index 52% rename from deployments/openTofu/GCP/gcp_readiness/compute/provider.tf rename to deployments/openTofu/GCP/ODIN_GCP/compute/provider.tf index 843deb52..25a08fb5 100644 --- a/deployments/openTofu/GCP/gcp_readiness/compute/provider.tf +++ b/deployments/openTofu/GCP/ODIN_GCP/compute/provider.tf @@ -8,15 +8,14 @@ terraform { required_version = ">= 1.5.0" - backend "gcs" { - bucket = "tofu-statefile-bucket" - prefix = "tofustate/compute" - # project = "valkyrie-project" - } + # backend "gcs" { + # bucket = "tofu-statefile-bucket" + # prefix = "tofustate/compute" + # } } provider "google" { credentials = "./keys.json" - project = "valkyrie-project" - region = "asia-south1" + project = var.project_name + region = var.location } \ No newline at end of file diff --git a/deployments/openTofu/GCP/ODIN_GCP/compute/variable.tf b/deployments/openTofu/GCP/ODIN_GCP/compute/variable.tf new file mode 100644 index 00000000..ed530ef4 --- /dev/null +++ b/deployments/openTofu/GCP/ODIN_GCP/compute/variable.tf @@ -0,0 +1,24 @@ +variable "location" { + type = string +} +variable "availability_zone" { + type = string +} +variable "project_name" { + type = string +} +variable "disk_iops" { + type = number +} +variable "disk_size_gb" { + type = number +} +variable "disk_throughput" { + type = number +} +variable "worker_machine_type" { + type = string +} +variable "server_machine_type" { + type = string +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/gcp_readiness/compute/data.tf b/deployments/openTofu/GCP/gcp_readiness/compute/data.tf deleted file mode 100644 index 44996e7c..00000000 --- a/deployments/openTofu/GCP/gcp_readiness/compute/data.tf +++ /dev/null @@ -1,23 +0,0 @@ -data "google_service_account" "name" { - account_id = "valk_user1" -} - -data "google_compute_network" "vpc" { - name = "valyrie-vpc" -} - -# Fetch an existing Subnet -data "google_compute_subnetwork" "worker-subnet" { - name = "valkyrie-worker-snet-01" - region = "asia-south1" -} - -data "google_compute_subnetwork" "server-subnet" { - name = "valkyrie-server-snet-01" - region = "asia-south1" -} - -data "google_compute_subnetwork" "db-subnet" { - name = "valkyrie-db-snet-01" - region = "asia-south1" -} \ No newline at end of file diff --git a/deployments/openTofu/GCP/gcp_readiness/compute/main.tf b/deployments/openTofu/GCP/gcp_readiness/compute/main.tf deleted file mode 100644 index 6b96ef8f..00000000 --- a/deployments/openTofu/GCP/gcp_readiness/compute/main.tf +++ /dev/null @@ -1,51 +0,0 @@ -module "persistant_disk" { - source = "../../modules/persistant_disk" - - disk_name = "nix-disk" - disk_size_gb = 200 - disk_type = "pd-balanced" - project_name = "Valkyrie-project" - zone_name = "asia-south1-c" - disk_iops = 3500 - disk_throughput = 300 -} - -module "server_vm" { - source = "../../modules/compute_engine" - - vm_name = "valkyrie-server" - os_image = "projects/ubuntu-os-cloud/global/images/ubuntu-2410-oracular-amd64-v20241115" - os_disk_size = 10 - os_disk_type = "pd-standard" - - disk_id = module.persistant_disk.disk_id - disk_name = module.persistant_disk.disk_name - - machine_type = "n2-custom-4-4096" - snet_id = data.google_compute_subnetwork.server-subnet.id - -} - -module "spot_vm_template" { - source = "../../modules/spot_vm_template" - - template_name = "valkyrie-worker-template" - vpc_name = data.google_compute_network.vpc.id #module.vpc.id - snet_name = data.google_compute_subnetwork.worker-subnet.id #module.vpc.snet_id - machine_type = "n2-custom-4-8192" - os = "projects/ubuntu-os-cloud/global/images/ubuntu-2410-oracular-amd64-v20241115" - os_disk_size = 10 - os_disk_access_mode = "READ_WRITE" - data_disk_name = module.persistant_disk.disk_name - data_disk_access_mode = "READ_ONLY" -} - -module "spot_mig" { - source = "../../modules/spot_MIG" - - mig_name = "valkyrie-worker" - mig_target_size = 1 - vm_template_id = module.spot_vm_template.spot_vm_template_id - data_disk_name = module.persistant_disk.disk_name - zone_name = "asia-south1-c" -} \ No newline at end of file diff --git a/deployments/openTofu/GCP/gcp_readiness/network/main.tf b/deployments/openTofu/GCP/gcp_readiness/network/main.tf deleted file mode 100644 index acea8e59..00000000 --- a/deployments/openTofu/GCP/gcp_readiness/network/main.tf +++ /dev/null @@ -1,52 +0,0 @@ -module "vpc" { - source = "../../modules/vpc" - - vpc_name = "valkyrie-vpc" -} - -module "subnet1" { - source = "../../modules/vpc/subnet" - - snet_name = "valkyrie-worker-snet-01" - snet_cidr = "10.0.0.0/22" - region = "asia-south1" - vpc_id = module.vpc.vpc_id -} - -module "subnet2" { - source = "../../modules/vpc/subnet" - - snet_name = "valkyrie-server-snet-01" - snet_cidr = "10.0.4.0/22" - region = "asia-south1" - vpc_id = module.vpc.vpc_id -} - -module "subnet3" { - source = "../../modules/vpc/subnet" - - snet_name = "valkyrie-db-snet-01" - snet_cidr = "10.0.8.0/22" - region = "asia-south1" - vpc_id = module.vpc.vpc_id -} - -module "ssh_firewall" { - source = "../../modules/vpc/firewall" - - vpc_id = module.vpc.vpc_id - rule_name = "allow-ssh" - ports = [ "22" ] - protocol_name = "tcp" - source_ips = ["0.0.0.0/0"] -} - -module "db_firewall" { - source = "../../modules/vpc/firewall" - - vpc_id = module.vpc.vpc_id - rule_name = "allow-db" - ports = [ "5432" ] - protocol_name = "tcp" - source_ips = ["0.0.0.0/0"] -} \ No newline at end of file diff --git a/deployments/openTofu/GCP/gcp_readiness/network/provider.tf b/deployments/openTofu/GCP/gcp_readiness/network/provider.tf deleted file mode 100644 index ac0bc77e..00000000 --- a/deployments/openTofu/GCP/gcp_readiness/network/provider.tf +++ /dev/null @@ -1,23 +0,0 @@ -terraform { - required_providers { - google = { - source = "hashicorp/google" - version = "~> 4.0" - } - } - - required_version = ">= 1.5.0" - - backend "gcs" { - bucket = "tofu-statefile-bucket" - prefix = "tofustate/network" - - } -} - -provider "google" { - credentials = "./keys.json" - project = "valkyrie-project" - region = "asia-south1" - zone = "asia-south1-c" -} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/spot_vm_template/main.tf b/deployments/openTofu/GCP/modules/spot_vm_template/main.tf index ebec5645..c85bea46 100644 --- a/deployments/openTofu/GCP/modules/spot_vm_template/main.tf +++ b/deployments/openTofu/GCP/modules/spot_vm_template/main.tf @@ -1,15 +1,19 @@ -resource "google_compute_instance_template" "new_template" { +resource "google_compute_instance_template" "odin_worker_template" { name = var.template_name machine_type = var.machine_type network_interface { network = var.vpc_name # Change this if using a custom VPC subnetwork = var.snet_name + access_config { + network_tier = "STANDARD" + } # network_tier = "STANDARD" stack_type = "IPV4_ONLY" } service_account { + email = var.service_account_email scopes = [ "cloud-platform" ] } @@ -48,4 +52,22 @@ resource "google_compute_instance_template" "new_template" { reservation_affinity { type = "ANY_RESERVATION" } + metadata = { + startup-script = <<-EOF + #!/bin/bash + + BUCKET_NAME="valnix-stage-bucket" + SCRIPT_NAME="stageDeploy.sh" + SCRIPT_PATH="/home/ubuntu/$SCRIPT_NAME" + + wget -P /home/ubuntu/ https://valnix-stage-bucket.s3.amazonaws.com/stageDeploy.sh + + cd /home/ubuntu + + chmod +x $SCRIPT_NAME + + su ubuntu -c ./$SCRIPT_NAME + EOF +} + } \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/spot_vm_template/output.tf b/deployments/openTofu/GCP/modules/spot_vm_template/output.tf index 2fac01ea..5cab994b 100644 --- a/deployments/openTofu/GCP/modules/spot_vm_template/output.tf +++ b/deployments/openTofu/GCP/modules/spot_vm_template/output.tf @@ -1,3 +1,3 @@ output "spot_vm_template_id" { - value = google_compute_instance_template.new_template.id + value = google_compute_instance_template.odin_worker_template.id } \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/spot_vm_template/variable.tf b/deployments/openTofu/GCP/modules/spot_vm_template/variable.tf index 80fbb30e..f91ac817 100644 --- a/deployments/openTofu/GCP/modules/spot_vm_template/variable.tf +++ b/deployments/openTofu/GCP/modules/spot_vm_template/variable.tf @@ -24,4 +24,7 @@ variable "data_disk_access_mode" { } variable "os_disk_access_mode" { +} +variable "service_account_email" { + } \ No newline at end of file From 700c919c6a644d9a45666606bba5605ed87ce7ea Mon Sep 17 00:00:00 2001 From: Manoj Hanavadadh Date: Sun, 12 Jan 2025 23:32:34 +0530 Subject: [PATCH 10/12] gcp static ip added --- deployments/openTofu/GCP/ODIN_GCP/compute/output.tf | 3 +++ deployments/openTofu/GCP/modules/compute_engine/main.tf | 6 +++++- deployments/openTofu/GCP/modules/compute_engine/output.tf | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 deployments/openTofu/GCP/ODIN_GCP/compute/output.tf create mode 100644 deployments/openTofu/GCP/modules/compute_engine/output.tf diff --git a/deployments/openTofu/GCP/ODIN_GCP/compute/output.tf b/deployments/openTofu/GCP/ODIN_GCP/compute/output.tf new file mode 100644 index 00000000..9686c632 --- /dev/null +++ b/deployments/openTofu/GCP/ODIN_GCP/compute/output.tf @@ -0,0 +1,3 @@ +output "public_ip_address" { + value = module.server_vm.public_ip_address +} \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/compute_engine/main.tf b/deployments/openTofu/GCP/modules/compute_engine/main.tf index 22af95e1..c52e139c 100644 --- a/deployments/openTofu/GCP/modules/compute_engine/main.tf +++ b/deployments/openTofu/GCP/modules/compute_engine/main.tf @@ -1,4 +1,8 @@ +resource "google_compute_address" "static-ip" { + name = "odin-server-pip" +} + resource "google_compute_instance" "compute-engine" { attached_disk { device_name = var.disk_name @@ -36,7 +40,7 @@ resource "google_compute_instance" "compute-engine" { network_interface { access_config { - network_tier = "STANDARD" + nat_ip = google_compute_address.static-ip.address } queue_count = 0 diff --git a/deployments/openTofu/GCP/modules/compute_engine/output.tf b/deployments/openTofu/GCP/modules/compute_engine/output.tf new file mode 100644 index 00000000..b8166093 --- /dev/null +++ b/deployments/openTofu/GCP/modules/compute_engine/output.tf @@ -0,0 +1,3 @@ +output "public_ip_address" { + value = google_compute_instance.compute-engine.network_interface[0].access_config[0].nat_ip +} \ No newline at end of file From 44e12dffe151aa9b2a6bf727d913f5e3fd95d763 Mon Sep 17 00:00:00 2001 From: Manoj Hanavadadh Date: Wed, 22 Jan 2025 10:11:09 +0530 Subject: [PATCH 11/12] aws iac updates --- .../openTofu/AWS/ODIN_AWS/compute/local.tf | 3 + .../openTofu/AWS/ODIN_AWS/compute/main.tf | 101 +++++++++++++++--- .../openTofu/AWS/ODIN_AWS/compute/odin.tfvars | 8 +- deployments/openTofu/AWS/modules/ec2/main.tf | 2 +- .../openTofu/AWS/modules/ec2SpotFleet/main.tf | 5 +- .../AWS/modules/randomPassword/main.tf | 9 ++ .../AWS/modules/randomPassword/output.tf | 4 + .../AWS/modules/randomPassword/variable.tf | 28 +++++ .../openTofu/AWS/modules/rds/output.tf | 6 ++ .../openTofu/AWS/modules/secret/main.tf | 8 ++ .../openTofu/AWS/modules/secret/variable.tf | 6 ++ .../modules/vpc/securityGroups/variable.tf | 7 ++ 12 files changed, 165 insertions(+), 22 deletions(-) create mode 100644 deployments/openTofu/AWS/ODIN_AWS/compute/local.tf create mode 100644 deployments/openTofu/AWS/modules/randomPassword/main.tf create mode 100644 deployments/openTofu/AWS/modules/randomPassword/output.tf create mode 100644 deployments/openTofu/AWS/modules/randomPassword/variable.tf create mode 100644 deployments/openTofu/AWS/modules/rds/output.tf create mode 100644 deployments/openTofu/AWS/modules/secret/main.tf create mode 100644 deployments/openTofu/AWS/modules/secret/variable.tf diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/local.tf b/deployments/openTofu/AWS/ODIN_AWS/compute/local.tf new file mode 100644 index 00000000..fb9d86c2 --- /dev/null +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/local.tf @@ -0,0 +1,3 @@ +locals { + rds_endpoint = split(":", module.rds.rds_pip)[0] +} \ No newline at end of file diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf b/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf index 59883e5a..07b7a533 100644 --- a/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/main.tf @@ -68,16 +68,41 @@ module "db_route_table02" { internet_gateway_id = module.internet_gateway.internet_gateway_id } - - - - - module "ssh_security_group" { source = "../../modules/vpc/securityGroups" security_grp_name = "SSH_Inbound" vpc_id = module.vpc.vpc_id + ingress_rules = [ + { + from_port = 22 + to_port = 22 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + }, + { + + from_port = 2049 + to_port = 2049 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + }, + { + + from_port = 80 + to_port = 80 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + , + { + + from_port = 443 + to_port = 443 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + ] } # resource "aws_network_interface" "my_network_interface" { @@ -120,21 +145,22 @@ module "ec2_spot_fleet" { aws_arn = data.aws_iam_role.spot-fleet.arn ami_id = "ami-0866a3c8686eaeeba" - instance_types = ["c5.xlarge", "m5.large", "t3.large"] + instance_types = ["m6a.xlarge", "m5.xlarge", "m7a.xlarge", "m5a.xlarge", "m6i.xlarge", "m6id.xlarge"] key_Pair = module.key_Pair.aws_key_pair_name subnet_id = module.compute_subnet.subnet_id availability_zone = module.ebs.ebs_availability_zone #data.aws_subnet.compute_subnet.availability_zone associate_pip = true security_group_ids = [module.ssh_security_group.sg_id] + } -module "server_ebs_vol_attach" { - source = "../../modules/ebs/ebs_volume_attach" +# module "server_ebs_vol_attach" { +# source = "../../modules/ebs/ebs_volume_attach" - ec2_id = module.ec2_spot_fleet.spot_fleet_id - volume_id = module.ebs.ebs_id - depends_on = [module.ec2_spot_fleet] -} +# ec2_id = module.ec2_spot_fleet.spot_fleet_id +# volume_id = module.ebs.ebs_id +# depends_on = [module.ec2_spot_fleet] +# } module "db_security_group" { @@ -142,8 +168,39 @@ module "db_security_group" { security_grp_name = "DB_Inbound" vpc_id = module.vpc.vpc_id + ingress_rules = [ + { + from_port = 22 + to_port = 22 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + }, + { + + from_port = 2049 + to_port = 2049 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + }, + { + + from_port = 5432 + to_port = 5432 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + ] } +module "random_password" { + source = "../../modules/randomPassword" + deploy = true + pwd_include_lower = true + pwd_include_number = true + pwd_include_upper = true + pwd_length = 15 + pwd_special = false +} module "rds" { source = "../../modules/rds" @@ -153,12 +210,26 @@ module "rds" { db_compute_instance = var.rds_compute_type skip_create_final_snapshot = true db_name = "odinstagingdb" - db_password = "9hsdu392jk21n" - db_username = "odinadmin" + db_password = module.random_password.password + db_username = "odinstagingowner" subnet_ids = [module.db_subnet01.subnet_id, module.db_subnet02.subnet_id] security_group_ids = [module.db_security_group.sg_id] multi_availability_zones = false allocated_storage = 10 db_subnet_group_name = "valnix-rds-subnet-group" -} \ No newline at end of file +} + +module "odin_secret" { + source = "../../modules/secret" + + secret_name = "odin-worker-secrets-3" + secret_value = { + POSTGRES_USER = "odinstagingowner" + POSTGRES_DB = "odinstagingdb" + POSTGRES_PASSWORD = module.rds.rds_password + POSTGRES_PORT = "5432" + POSTGRES_HOST = local.rds_endpoint + } + +} diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars b/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars index 75cee859..8dbda546 100644 --- a/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars @@ -4,9 +4,9 @@ snet_availability_zone2 = "us-east-1b" key_pair_name = "ec2_key_pair" ebs_size = 80 -multi_attach_enabled = true -ebs_iops = 1000 -ebs_type = "io1" +multi_attach_enabled = false +ebs_iops = 5000 +ebs_type = "gp3" -ec2_instance_type = "t3.micro" +ec2_instance_type = "t3.large" rds_compute_type = "db.t3.micro" \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/ec2/main.tf b/deployments/openTofu/AWS/modules/ec2/main.tf index 09e87999..41e4bf05 100644 --- a/deployments/openTofu/AWS/modules/ec2/main.tf +++ b/deployments/openTofu/AWS/modules/ec2/main.tf @@ -13,6 +13,6 @@ resource "aws_instance" "ec2" { key_name = var.key_pair_name associate_public_ip_address = var.associate_pip tags = { - Name = Odin-server + Name = "odin-server" } } \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf b/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf index a8793fb6..0ad75481 100644 --- a/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf +++ b/deployments/openTofu/AWS/modules/ec2SpotFleet/main.tf @@ -9,7 +9,7 @@ resource "aws_spot_fleet_request" "example" { ami = var.ami_id instance_type = launch_specification.value key_name = var.key_Pair - spot_price = "0.039" + spot_price = "0.08" iam_instance_profile = "OdinBuilderWorker" subnet_id = var.subnet_id availability_zone = var.availability_zone @@ -26,8 +26,9 @@ resource "aws_spot_fleet_request" "example" { SCRIPT_NAME="deploy.sh" SCRIPT_PATH="/home/ubuntu/$SCRIPT_NAME" - aws s3 cp s3://$BUCKET_NAME/$SCRIPT_NAME $SCRIPT_PATH --region $REGION + wget -P /home/ubuntu/ https://valnix-stage-bucket.s3.amazonaws.com/deploy.sh + cd /home/ubuntu chmod +x $SCRIPT_NAME diff --git a/deployments/openTofu/AWS/modules/randomPassword/main.tf b/deployments/openTofu/AWS/modules/randomPassword/main.tf new file mode 100644 index 00000000..8f9ae948 --- /dev/null +++ b/deployments/openTofu/AWS/modules/randomPassword/main.tf @@ -0,0 +1,9 @@ +resource "random_password" "rand_pwd" { + count = var.deploy ? 1 : 0 + length = var.pwd_length + override_special = "@#!%" + special = var.pwd_special + upper = var.pwd_include_upper + lower = var.pwd_include_lower + numeric = var.pwd_include_number +} \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/randomPassword/output.tf b/deployments/openTofu/AWS/modules/randomPassword/output.tf new file mode 100644 index 00000000..15e5cba9 --- /dev/null +++ b/deployments/openTofu/AWS/modules/randomPassword/output.tf @@ -0,0 +1,4 @@ +output "password" { + value = var.deploy ? random_password.rand_pwd[0].result : "" + description = "The random password generated by the module." +} \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/randomPassword/variable.tf b/deployments/openTofu/AWS/modules/randomPassword/variable.tf new file mode 100644 index 00000000..7006a580 --- /dev/null +++ b/deployments/openTofu/AWS/modules/randomPassword/variable.tf @@ -0,0 +1,28 @@ +variable "deploy" { + type = bool +} + +variable "pwd_length" { + type = number + default = 26 +} + +variable "pwd_special" { + type = bool + default = true +} + +variable "pwd_include_upper" { + type = bool + default = true +} + +variable "pwd_include_lower" { + type = bool + default = true +} + +variable "pwd_include_number" { + type = bool + default = true +} diff --git a/deployments/openTofu/AWS/modules/rds/output.tf b/deployments/openTofu/AWS/modules/rds/output.tf new file mode 100644 index 00000000..ef22075e --- /dev/null +++ b/deployments/openTofu/AWS/modules/rds/output.tf @@ -0,0 +1,6 @@ +output "rds_pip" { + value = aws_db_instance.default.endpoint +} +output "rds_password" { + value = aws_db_instance.default.password +} \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/secret/main.tf b/deployments/openTofu/AWS/modules/secret/main.tf new file mode 100644 index 00000000..14a5dd98 --- /dev/null +++ b/deployments/openTofu/AWS/modules/secret/main.tf @@ -0,0 +1,8 @@ +resource "aws_secretsmanager_secret" "aws_secret" { + name = var.secret_name +} + +resource "aws_secretsmanager_secret_version" "aws_secret_version" { + secret_id = aws_secretsmanager_secret.aws_secret.id + secret_string = jsonencode(var.secret_value) +} \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/secret/variable.tf b/deployments/openTofu/AWS/modules/secret/variable.tf new file mode 100644 index 00000000..e57a5c78 --- /dev/null +++ b/deployments/openTofu/AWS/modules/secret/variable.tf @@ -0,0 +1,6 @@ +variable "secret_name" { + type = string +} +variable "secret_value" { + type = map(string) +} \ No newline at end of file diff --git a/deployments/openTofu/AWS/modules/vpc/securityGroups/variable.tf b/deployments/openTofu/AWS/modules/vpc/securityGroups/variable.tf index e11d5f0a..c743b6da 100644 --- a/deployments/openTofu/AWS/modules/vpc/securityGroups/variable.tf +++ b/deployments/openTofu/AWS/modules/vpc/securityGroups/variable.tf @@ -26,6 +26,13 @@ variable "ingress_rules" { to_port = 2049 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] + }, + { + + from_port = 5432 + to_port = 5432 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] } ] } \ No newline at end of file From 20c1eb8c4ac65415162e8a0c4c5aa19d21bb70f2 Mon Sep 17 00:00:00 2001 From: Manoj Hanavadadh Date: Sun, 27 Jul 2025 18:03:11 +0530 Subject: [PATCH 12/12] Update AWS and GCP configurations: change EC2 instance type to t3.small, update GCP location and availability zone, modify provider credentials, and comment out unused variables and resources. --- .../openTofu/AWS/ODIN_AWS/compute/odin.tfvars | 2 +- .../openTofu/GCP/ODIN_GCP/compute/main.tf | 113 ++++++++++-------- .../openTofu/GCP/ODIN_GCP/compute/odin.tfvars | 4 +- .../openTofu/GCP/ODIN_GCP/compute/provider.tf | 2 +- .../GCP/modules/compute_engine/main.tf | 12 +- .../GCP/modules/compute_engine/variables.tf | 11 +- 6 files changed, 79 insertions(+), 65 deletions(-) diff --git a/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars b/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars index 8dbda546..e55ce6d2 100644 --- a/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars +++ b/deployments/openTofu/AWS/ODIN_AWS/compute/odin.tfvars @@ -8,5 +8,5 @@ multi_attach_enabled = false ebs_iops = 5000 ebs_type = "gp3" -ec2_instance_type = "t3.large" +ec2_instance_type = "t3.small" rds_compute_type = "db.t3.micro" \ No newline at end of file diff --git a/deployments/openTofu/GCP/ODIN_GCP/compute/main.tf b/deployments/openTofu/GCP/ODIN_GCP/compute/main.tf index 732b0631..dfe19127 100644 --- a/deployments/openTofu/GCP/ODIN_GCP/compute/main.tf +++ b/deployments/openTofu/GCP/ODIN_GCP/compute/main.tf @@ -4,14 +4,14 @@ module "vpc" { vpc_name = "valkyrie-vpc" } -module "worker_subnet" { - source = "../../modules/vpc/subnet" +# module "worker_subnet" { +# source = "../../modules/vpc/subnet" - snet_name = "valkyrie-worker-snet" - snet_cidr = "10.0.0.0/22" - region = var.location - vpc_id = module.vpc.vpc_id -} +# snet_name = "valkyrie-worker-snet" +# snet_cidr = "10.0.0.0/22" +# region = var.location +# vpc_id = module.vpc.vpc_id +# } module "server_subnet" { source = "../../modules/vpc/subnet" @@ -22,14 +22,14 @@ module "server_subnet" { vpc_id = module.vpc.vpc_id } -module "db_subnet" { - source = "../../modules/vpc/subnet" +# module "db_subnet" { +# source = "../../modules/vpc/subnet" - snet_name = "valkyrie-db-snet" - snet_cidr = "10.0.8.0/22" - region = var.location - vpc_id = module.vpc.vpc_id -} +# snet_name = "valkyrie-db-snet" +# snet_cidr = "10.0.8.0/22" +# region = var.location +# vpc_id = module.vpc.vpc_id +# } module "ssh_firewall" { source = "../../modules/vpc/firewall" @@ -51,55 +51,66 @@ module "db_firewall" { source_ips = ["0.0.0.0/0"] } -module "persistant_disk" { - source = "../../modules/persistant_disk" +module "https_firewall" { + source = "../../modules/vpc/firewall" - disk_name = "shared-nix-store" - disk_size_gb = var.disk_size_gb - disk_type = "pd-balanced" - project_name = var.project_name - zone_name = var.availability_zone - disk_iops = var.disk_iops - disk_throughput = var.disk_throughput + vpc_id = module.vpc.vpc_id + rule_name = "allow-https" + ports = [ "443" ] + protocol_name = "tcp" + source_ips = ["0.0.0.0/0"] } +# module "persistant_disk" { +# source = "../../modules/persistant_disk" + +# disk_name = "shared-nix-store" +# disk_size_gb = var.disk_size_gb +# disk_type = "pd-balanced" +# project_name = var.project_name +# zone_name = var.availability_zone +# disk_iops = var.disk_iops +# disk_throughput = var.disk_throughput +# } + module "server_vm" { source = "../../modules/compute_engine" - vm_name = "odin-server" + vm_name = "valkyrie-server" os_image = "projects/ubuntu-os-cloud/global/images/ubuntu-2410-oracular-amd64-v20241115" - os_disk_size = 10 + os_disk_size = 50 os_disk_type = "pd-standard" + zone = var.availability_zone - disk_id = module.persistant_disk.disk_id - disk_name = module.persistant_disk.disk_name + # disk_id = module.persistant_disk.disk_id + # disk_name = module.persistant_disk.disk_name machine_type = var.server_machine_type snet_id = module.server_subnet.snet_id } -module "spot_vm_template" { - source = "../../modules/spot_vm_template" - - template_name = "odin-worker-template" - vpc_name = module.vpc.vpc_id - snet_name = module.worker_subnet.snet_id - machine_type = var.worker_machine_type - os = "projects/ubuntu-os-cloud/global/images/ubuntu-2410-oracular-amd64-v20241115" - os_disk_size = 10 - os_disk_access_mode = "READ_WRITE" - data_disk_name = module.persistant_disk.disk_name - data_disk_access_mode = "READ_ONLY" - service_account_email = data.google_service_account.svc_acc.email -} - -module "spot_mig" { - source = "../../modules/spot_MIG" - - mig_name = "odin-worker" - mig_target_size = 1 - vm_template_id = module.spot_vm_template.spot_vm_template_id - data_disk_name = module.persistant_disk.disk_name - zone_name = var.availability_zone -} \ No newline at end of file +# module "spot_vm_template" { +# source = "../../modules/spot_vm_template" + +# template_name = "odin-worker-template" +# vpc_name = module.vpc.vpc_id +# snet_name = module.worker_subnet.snet_id +# machine_type = var.worker_machine_type +# os = "projects/ubuntu-os-cloud/global/images/ubuntu-2410-oracular-amd64-v20241115" +# os_disk_size = 10 +# os_disk_access_mode = "READ_WRITE" +# data_disk_name = module.persistant_disk.disk_name +# data_disk_access_mode = "READ_ONLY" +# service_account_email = data.google_service_account.svc_acc.email +# } + +# module "spot_mig" { +# source = "../../modules/spot_MIG" + +# mig_name = "odin-worker" +# mig_target_size = 1 +# vm_template_id = module.spot_vm_template.spot_vm_template_id +# data_disk_name = module.persistant_disk.disk_name +# zone_name = var.availability_zone +# } \ No newline at end of file diff --git a/deployments/openTofu/GCP/ODIN_GCP/compute/odin.tfvars b/deployments/openTofu/GCP/ODIN_GCP/compute/odin.tfvars index 9e9c88a5..b5c94d0c 100644 --- a/deployments/openTofu/GCP/ODIN_GCP/compute/odin.tfvars +++ b/deployments/openTofu/GCP/ODIN_GCP/compute/odin.tfvars @@ -1,5 +1,5 @@ -location = "asia-south1" -availability_zone = "asia-south1-c" +location = "us-central1" +availability_zone = "us-central1-c" project_name = "valkyrie-project" worker_machine_type = "n2-custom-4-8192" diff --git a/deployments/openTofu/GCP/ODIN_GCP/compute/provider.tf b/deployments/openTofu/GCP/ODIN_GCP/compute/provider.tf index 25a08fb5..f4636db0 100644 --- a/deployments/openTofu/GCP/ODIN_GCP/compute/provider.tf +++ b/deployments/openTofu/GCP/ODIN_GCP/compute/provider.tf @@ -15,7 +15,7 @@ terraform { } provider "google" { - credentials = "./keys.json" + credentials = "./gcp.json" project = var.project_name region = var.location } \ No newline at end of file diff --git a/deployments/openTofu/GCP/modules/compute_engine/main.tf b/deployments/openTofu/GCP/modules/compute_engine/main.tf index c52e139c..7819b4b7 100644 --- a/deployments/openTofu/GCP/modules/compute_engine/main.tf +++ b/deployments/openTofu/GCP/modules/compute_engine/main.tf @@ -4,13 +4,13 @@ resource "google_compute_address" "static-ip" { } resource "google_compute_instance" "compute-engine" { - attached_disk { - device_name = var.disk_name - mode = "READ_ONLY" - source = var.disk_id - } + # attached_disk { + # device_name = var.disk_name + # mode = "READ_ONLY" + # source = var.disk_id + # } - zone = "asia-south1-c" + zone = var.zone#"asia-south1-c" boot_disk { auto_delete = true diff --git a/deployments/openTofu/GCP/modules/compute_engine/variables.tf b/deployments/openTofu/GCP/modules/compute_engine/variables.tf index 7be5bbbc..dc2fbaac 100644 --- a/deployments/openTofu/GCP/modules/compute_engine/variables.tf +++ b/deployments/openTofu/GCP/modules/compute_engine/variables.tf @@ -1,14 +1,17 @@ variable "machine_type" { } -variable "disk_name" { +# variable "disk_name" { -} -variable "disk_id" { +# } +# variable "disk_id" { -} +# } variable "os_image" { +} +variable "zone" { + } variable "os_disk_size" { type = number