gitops/iac-template/terraform-hcl-standard/ali-cloud/envs/dev/main.tf

100 lines
2.3 KiB
HCL

terraform {
required_version = ">= 1.5.0"
required_providers {
alicloud = {
source = "aliyun/alicloud"
version = ">= 1.210.0"
}
}
}
provider "alicloud" {
region = var.region
}
module "network" {
source = "../modules/vpc"
name = var.vpc_name
cidr_block = var.vpc_cidr
vswitches = var.vswitches
}
locals {
zone_mappings = [for key, cfg in var.vswitches : {
vswitch_id = module.network.vswitch_ids[key]
zone_id = cfg.az
}]
primary_vswitch = module.network.vswitch_ids[local.primary_vswitch_key]
primary_vswitch_key = keys(module.network.vswitch_ids)[0]
}
module "alb" {
source = "../modules/alb"
name = "dev-alb"
vpc_id = module.network.vpc_id
zone_mappings = local.zone_mappings
address_type = "Internet"
edition = "Standard"
protocol = "HTTP"
listener_port = 80
}
module "nlb" {
source = "../modules/nlb"
name = "dev-nlb"
vswitch_id = local.primary_vswitch
address_type = "Internet"
spec = "slb.s2.small"
protocol = "tcp"
frontend_port = 443
backend_port = 443
}
module "bucket" {
source = "../modules/oss"
name = var.bucket_name
enable_versioning = true
}
module "compute" {
source = "../modules/ecs"
name = "dev-ecs"
vpc_id = module.network.vpc_id
vswitch_id = local.primary_vswitch
instance_type = var.instance_type
image_id = var.image_id
key_name = var.key_name
internet_max_bandwidth_out = 50
}
module "database" {
source = "../modules/rds"
vpc_id = module.network.vpc_id
vswitch_id = local.primary_vswitch
engine = "MySQL"
engine_version = "8.0"
instance_type = var.rds_instance_type
account_password = var.rds_password
}
module "cache" {
source = "../modules/redis"
name = "dev-redis"
vpc_id = module.network.vpc_id
vswitch_id = local.primary_vswitch
password = var.redis_password
engine_version = "6.0"
}
output "vpc_id" {
value = module.network.vpc_id
}
output "alb_endpoint" {
value = module.alb.alb_id
}
output "ecs_instance" {
value = module.compute.instance_id
}