solution/automation/finance-industry/step/sec-subscribe-anti-ddos/main.tf (108 lines of code) (raw):
locals {
account_json = fileexists("../var/account.json") ? jsondecode(file("../var/account.json")) : {}
dev_account_id = var.dev_account_id == "" ? local.account_json["dev_account_id"] : var.dev_account_id
security_account_id = var.security_account_id == "" ? local.account_json["security_account_id"] : var.security_account_id
shared_service_account_id = var.shared_service_account_id == "" ? local.account_json["shared_service_account_id"] : var.shared_service_account_id
waf_security_account_json = fileexists("../var/waf.json") ? jsondecode(file("../var/waf.json"))["security_account"] : {}
alb_json = fileexists("../var/ecs-alb.json") ? jsondecode(file("../var/ecs-alb.json")) : {}
dev_account_alb_id = var.dev_account_alb_id == "" ? local.alb_json["dev_account"]["alb_id"] : var.dev_account_alb_id
shared_service_account_alb_id = var.shared_service_account_alb_id == "" ? local.alb_json["shared_service_account"]["alb_id"] : var.shared_service_account_alb_id
}
provider "alicloud" {
region = "cn-hangzhou"
alias = "security_account"
assume_role {
role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", local.security_account_id)
session_name = "AccountLandingZoneSetup"
session_expiration = 999
}
}
resource "alicloud_ddoscoo_instance" "newInstance" {
provider = alicloud.security_account
name = var.ddos_bgp_instance_spec.name
bandwidth = var.ddos_bgp_instance_spec.bandwidth
base_bandwidth = var.ddos_bgp_instance_spec.base_bandwidth
service_bandwidth = var.ddos_bgp_instance_spec.service_bandwidth
port_count = var.ddos_bgp_instance_spec.port_count
domain_count = var.ddos_bgp_instance_spec.domain_count
period = var.ddos_bgp_instance_spec.period
product_type = var.ddos_bgp_instance_spec.product_type
}
provider "alicloud" {
region = var.region
alias = "shared_service_account"
assume_role {
role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", local.shared_service_account_id)
session_name = "AccountLandingZoneSetup"
session_expiration = 999
}
}
data "alicloud_alb_load_balancers" "alb_shared_service_account" {
provider = alicloud.shared_service_account
ids = [local.shared_service_account_alb_id]
}
locals {
shared_service_alb_instance = data.alicloud_alb_load_balancers.alb_shared_service_account.balancers.0
shared_service_account_domain_name = var.shared_service_account_domain_name == "" ? local.shared_service_alb_instance.dns_name : var.shared_service_account_domain_name
shared_service_account_real_servers = length(var.shared_service_account_real_servers) == 0 ? [
local.waf_security_account_json["shared_service_account_waf_cname"]
] : var.shared_service_account_real_servers
}
resource "alicloud_ddoscoo_domain_resource" "shared_service_account_domain_resource" {
provider = alicloud.security_account
instance_ids = [alicloud_ddoscoo_instance.newInstance.id]
real_servers = local.shared_service_account_real_servers
domain = local.shared_service_account_domain_name
https_ext = var.ddos_domain_https_ext
rs_type = var.ddos_domain_rs_type
dynamic "proxy_types" {
for_each = {for type in var.ddos_domain_proxy_types : type.proxy_type => type}
content {
proxy_ports = proxy_types.value.proxy_ports
proxy_type = proxy_types.value.proxy_type
}
}
}
provider "alicloud" {
region = var.region
alias = "dev_account"
assume_role {
role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", local.dev_account_id)
session_name = "AccountLandingZoneSetup"
session_expiration = 999
}
}
data "alicloud_alb_load_balancers" "alb_dev_account" {
provider = alicloud.dev_account
ids = [local.dev_account_alb_id]
}
locals {
dev_alb_instance = data.alicloud_alb_load_balancers.alb_dev_account.balancers.0
dev_account_domain_name = var.dev_account_domain_name == "" ? local.dev_alb_instance.dns_name : var.dev_account_domain_name
dev_account_real_servers = length(var.dev_account_real_servers) == 0 ? [
local.waf_security_account_json["dev_account_waf_cname"]
] : var.dev_account_real_servers
}
resource "alicloud_ddoscoo_domain_resource" "dev_account_domain_resource" {
provider = alicloud.security_account
instance_ids = [alicloud_ddoscoo_instance.newInstance.id]
real_servers = local.dev_account_real_servers
domain = local.dev_account_domain_name
https_ext = var.ddos_domain_https_ext
rs_type = var.ddos_domain_rs_type
dynamic "proxy_types" {
for_each = {for type in var.ddos_domain_proxy_types : type.proxy_type => type}
content {
proxy_ports = proxy_types.value.proxy_ports
proxy_type = proxy_types.value.proxy_type
}
}
}
resource "local_file" "json_file" {
content = templatefile("../var/anti-ddos.json.tmpl", {
anti_ddos_id = alicloud_ddoscoo_instance.newInstance.id
dev_account_waf_domain_id = alicloud_ddoscoo_domain_resource.dev_account_domain_resource.id
shared_service_account_domain_id = alicloud_ddoscoo_domain_resource.shared_service_account_domain_resource.id
})
filename = "../var/anti-ddos.json"
}