solution/automation/finance-industry/step/application-deploy-ecs-alb/main.tf (118 lines of code) (raw):
locals {
account_json = fileexists("../var/account.json") ? jsondecode(file("../var/account.json")) : {}
shared_service_account_id = var.shared_service_account_id == "" ? local.account_json["shared_service_account_id"] : var.shared_service_account_id
dev_account_id = var.dev_account_id == "" ? local.account_json["dev_account_id"] : var.dev_account_id
shared_service_account_vpc_config = var.shared_service_account_vpc_config
dev_account_vpc_config = var.dev_account_vpc_config
vpc_json = fileexists("../var/vpc.json") ? jsondecode(file("../var/vpc.json")) : {}
shared_service_account_vpc_id = var.shared_service_account_vpc_id == "" ? local.vpc_json["shared_service_account"]["vpc_id"] : var.shared_service_account_vpc_id
dev_account_vpc_id = var.dev_account_vpc_id == "" ? local.vpc_json["dev_account"]["vpc_id"] : var.dev_account_vpc_id
}
provider "alicloud" {
alias = "shared_service_account"
region = local.shared_service_account_vpc_config.region
assume_role {
role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", local.shared_service_account_id)
session_name = "AccountLandingZoneSetup"
session_expiration = 999
}
}
module "shared_service_account_ecs_alb" {
source = "../../modules/ecs-alb-multi-az"
providers = {
alicloud = alicloud.shared_service_account
}
vpc_id = local.shared_service_account_vpc_id
security_group_name = var.security_group_name
security_group_desc = var.security_group_desc
security_group_rule = var.security_group_rule
ecs_instance_password = var.ecs_instance_password
ecs_instance_deploy_config = [
{
zone_id = local.shared_service_account_vpc_config.vswitch.0.zone_id
vswitch_id = local.vpc_json.shared_service_account.vsw1_id
instance_name = var.dmz_vpc_ecs_instance_deploy_config.0.instance_name
host_name = var.dmz_vpc_ecs_instance_deploy_config.0.host_name
description = var.dmz_vpc_ecs_instance_deploy_config.0.description
}, {
zone_id = local.shared_service_account_vpc_config.vswitch.1.zone_id
vswitch_id = local.vpc_json.shared_service_account.vsw2_id
instance_name = var.dmz_vpc_ecs_instance_deploy_config.1.instance_name
host_name = var.dmz_vpc_ecs_instance_deploy_config.1.host_name
description = var.dmz_vpc_ecs_instance_deploy_config.1.description
}
]
ecs_instance_spec = var.ecs_instance_spec
alb_instance_deploy_config = {
load_balancer_name = var.dmz_vpc_alb_instance_name
zone_1_id = local.shared_service_account_vpc_config.vswitch.0.zone_id
vswitch_1_id = local.vpc_json.shared_service_account.vsw1_id
zone_2_id = local.shared_service_account_vpc_config.vswitch.1.zone_id
vswitch_2_id = local.vpc_json.shared_service_account.vsw2_id
}
alb_instance_spec = var.alb_instance_spec
server_group_config = var.server_group_config
alb_listener_description = var.alb_listener_description
}
provider "alicloud" {
alias = "dev_account"
region = local.dev_account_vpc_config.region
assume_role {
role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", local.dev_account_id)
session_name = "AccountLandingZoneSetup"
session_expiration = 999
}
}
module "dev_account_ecs_alb" {
source = "../../modules/ecs-alb-multi-az"
providers = {
alicloud = alicloud.dev_account
}
vpc_id = local.dev_account_vpc_id
security_group_name = var.security_group_name
security_group_desc = var.security_group_desc
security_group_rule = var.security_group_rule
ecs_instance_password = var.ecs_instance_password
ecs_instance_deploy_config = [
{
zone_id = local.dev_account_vpc_config.vswitch.0.zone_id
vswitch_id = local.vpc_json.dev_account.vsw1_id
instance_name = var.dev_vpc_ecs_instance_deploy_config.0.instance_name
host_name = var.dev_vpc_ecs_instance_deploy_config.0.host_name
description = var.dev_vpc_ecs_instance_deploy_config.0.description
}, {
zone_id = local.dev_account_vpc_config.vswitch.1.zone_id
vswitch_id = local.vpc_json.dev_account.vsw2_id
instance_name = var.dev_vpc_ecs_instance_deploy_config.1.instance_name
host_name = var.dev_vpc_ecs_instance_deploy_config.1.host_name
description = var.dev_vpc_ecs_instance_deploy_config.1.description
}
]
alb_instance_deploy_config = {
load_balancer_name = var.dev_vpc_alb_instance_name
zone_1_id = local.dev_account_vpc_config.vswitch.0.zone_id
vswitch_1_id = local.vpc_json.dev_account.vsw1_id
zone_2_id = local.dev_account_vpc_config.vswitch.1.zone_id
vswitch_2_id = local.vpc_json.dev_account.vsw2_id
}
}
# Save information
resource "local_file" "account_json" {
content = templatefile("../var/ecs-alb.json.tmpl", {
shared_service_account_security_group_id = module.shared_service_account_ecs_alb.security_group_id
shared_service_account_ecs1_id = module.shared_service_account_ecs_alb.ecs_instance_ids.0
shared_service_account_ecs2_id = module.shared_service_account_ecs_alb.ecs_instance_ids.1
shared_service_account_alb_id = module.shared_service_account_ecs_alb.alb_instance_id
shared_service_account_server_group_id = module.shared_service_account_ecs_alb.server_group_id
shared_service_account_alb_listener_id = module.shared_service_account_ecs_alb.alb_listener_id
dev_account_security_group_id = module.dev_account_ecs_alb.security_group_id
dev_account_ecs1_id = module.dev_account_ecs_alb.ecs_instance_ids.0
dev_account_ecs2_id = module.dev_account_ecs_alb.ecs_instance_ids.1
dev_account_alb_id = module.dev_account_ecs_alb.alb_instance_id
dev_account_server_group_id = module.dev_account_ecs_alb.server_group_id
dev_account_alb_listener_id = module.dev_account_ecs_alb.alb_listener_id
})
filename = "../var/ecs-alb.json"
depends_on = [
module.shared_service_account_ecs_alb, module.dev_account_ecs_alb
]
}