solution/automation/finance-industry/step/network-create-vpc/main.tf (122 lines of code) (raw):

locals { account_json = fileexists("../var/account.json") ? jsondecode(file("../var/account.json")) : {} management_account_id = var.management_account_id == "" ? local.account_json["management_account_id"] : var.management_account_id log_account_id = var.log_account_id == "" ? local.account_json["log_account_id"] : var.log_account_id shared_service_account_id = var.shared_service_account_id == "" ? local.account_json["shared_service_account_id"] : var.shared_service_account_id security_account_id = var.security_account_id == "" ? local.account_json["security_account_id"] : var.security_account_id ops_account_id = var.ops_account_id == "" ? local.account_json["ops_account_id"] : var.ops_account_id dev_account_id = var.dev_account_id == "" ? local.account_json["dev_account_id"] : var.dev_account_id prod_account_id = var.prod_account_id == "" ? local.account_json["prod_account_id"] : var.prod_account_id shared_service_account_vpc_config = var.shared_service_account_vpc_config dev_account_vpc_config = var.dev_account_vpc_config prod_account_vpc_config = var.prod_account_vpc_config ops_account_vpc_config = var.ops_account_vpc_config } 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_vpc" { source = "../../modules/networking/vpc-create" providers = { alicloud = alicloud.shared_service_account } vpc_name = local.shared_service_account_vpc_config["vpc_name"] vpc_desc = local.shared_service_account_vpc_config["vpc_desc"] vpc_cidr = local.shared_service_account_vpc_config["vpc_cidr"] vpc_tags = local.shared_service_account_vpc_config["vpc_tags"] vswitch_configuration = local.shared_service_account_vpc_config["vswitch"] } 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_vpc" { source = "../../modules/networking/vpc-create" providers = { alicloud = alicloud.dev_account } vpc_name = local.dev_account_vpc_config["vpc_name"] vpc_desc = local.dev_account_vpc_config["vpc_desc"] vpc_cidr = local.dev_account_vpc_config["vpc_cidr"] vpc_tags = local.dev_account_vpc_config["vpc_tags"] vswitch_configuration = local.dev_account_vpc_config["vswitch"] } provider "alicloud" { alias = "prod_account" region = local.prod_account_vpc_config["region"] assume_role { role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", local.prod_account_id) session_name = "AccountLandingZoneSetup" session_expiration = 999 } } module "prod_account_vpc" { source = "../../modules/networking/vpc-create" providers = { alicloud = alicloud.prod_account } vpc_name = local.prod_account_vpc_config["vpc_name"] vpc_desc = local.prod_account_vpc_config["vpc_desc"] vpc_cidr = local.prod_account_vpc_config["vpc_cidr"] vpc_tags = local.prod_account_vpc_config["vpc_tags"] vswitch_configuration = local.prod_account_vpc_config["vswitch"] } provider "alicloud" { alias = "ops_account" region = local.ops_account_vpc_config["region"] assume_role { role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", local.ops_account_id) session_name = "AccountLandingZoneSetup" session_expiration = 999 } } module "ops_account_vpc" { source = "../../modules/networking/vpc-create" providers = { alicloud = alicloud.ops_account } vpc_name = local.ops_account_vpc_config["vpc_name"] vpc_desc = local.ops_account_vpc_config["vpc_desc"] vpc_cidr = local.ops_account_vpc_config["vpc_cidr"] vpc_tags = local.ops_account_vpc_config["vpc_tags"] vswitch_configuration = local.ops_account_vpc_config["vswitch"] } # Save VPC information resource "local_file" "account_json" { content = templatefile("../var/vpc.json.tmpl", { shared_service_account_vpc_id = module.shared_service_account_vpc.vpc_id shared_service_account_vsw_tr1_id = module.shared_service_account_vpc.vsw1_id shared_service_account_vsw_tr2_id = module.shared_service_account_vpc.vsw2_id shared_service_account_vsw1_id = module.shared_service_account_vpc.vsw3_id shared_service_account_vsw2_id = module.shared_service_account_vpc.vsw4_id dev_account_vpc_id = module.dev_account_vpc.vpc_id dev_account_vsw_tr1_id = module.dev_account_vpc.vsw1_id dev_account_vsw_tr2_id = module.dev_account_vpc.vsw2_id dev_account_vsw1_id = module.dev_account_vpc.vsw3_id dev_account_vsw2_id = module.dev_account_vpc.vsw4_id prod_account_vpc_id = module.prod_account_vpc.vpc_id prod_account_vsw_tr1_id = module.prod_account_vpc.vsw1_id prod_account_vsw_tr2_id = module.prod_account_vpc.vsw2_id prod_account_vsw1_id = module.prod_account_vpc.vsw3_id prod_account_vsw2_id = module.prod_account_vpc.vsw4_id ops_account_vpc_id = module.ops_account_vpc.vpc_id ops_account_vsw_tr1_id = module.ops_account_vpc.vsw1_id ops_account_vsw_tr2_id = module.ops_account_vpc.vsw2_id ops_account_vsw1_id = module.ops_account_vpc.vsw3_id ops_account_vsw2_id = module.ops_account_vpc.vsw4_id }) filename = "../var/vpc.json" depends_on = [ module.shared_service_account_vpc, module.dev_account_vpc, module.prod_account_vpc, module.ops_account_vpc ] }