# Terraform Main — Auto-generated by hmcmkit infra-architect # Level: Enterprise | Provider: AWS # # Usage: # cd infra/terraform/environments/{env} # terraform init # terraform plan # terraform apply terraform { required_version = ">= 1.5" required_providers { aws = { source = "hashicorp/aws", version = "~> 5.0" } } backend "s3" { bucket = "${project_name}-terraform-state" key = "${environment}/terraform.tfstate" region = "${aws_region}" dynamodb_table = "${project_name}-terraform-locks" encrypt = true } } provider "aws" { region = var.aws_region default_tags { tags = { Project = var.project_name Environment = var.environment ManagedBy = "terraform" GeneratedBy = "hmcmkit" } } } # ── Modules ── module "vpc" { source = "../../modules/vpc" project_name = var.project_name environment = var.environment vpc_cidr = var.vpc_cidr } module "eks" { source = "../../modules/eks" project_name = var.project_name environment = var.environment vpc_id = module.vpc.vpc_id private_subnets = module.vpc.private_subnet_ids cluster_version = var.eks_cluster_version node_instance_types = var.node_instance_types depends_on = [module.vpc] } module "rds" { source = "../../modules/rds" project_name = var.project_name environment = var.environment vpc_id = module.vpc.vpc_id db_subnets = module.vpc.database_subnet_ids engine = "postgres" engine_version = "15.4" instance_class = var.db_instance_class multi_az = var.environment == "prod" ? true : false depends_on = [module.vpc] } # ── Variables ── variable "project_name" { type = string } variable "environment" { type = string } variable "aws_region" { type = string; default = "ap-northeast-2" } variable "vpc_cidr" { type = string; default = "10.0.0.0/16" } variable "eks_cluster_version" { type = string; default = "1.29" } variable "node_instance_types" { type = list(string); default = ["t3.medium"] } variable "db_instance_class" { type = string; default = "db.t3.medium" } # ── Outputs ── output "vpc_id" { value = module.vpc.vpc_id } output "eks_cluster_endpoint" { value = module.eks.cluster_endpoint } output "rds_endpoint" { value = module.rds.endpoint }