solution/solution-cen-ack/main.tf (117 lines of code) (raw):

data "alicloud_account" "current" { } locals { role_name = "ResourceDirectoryAccountAccessRole" user1_is_admin = var.user1_id == data.alicloud_account.current.id ? true : false user2_is_admin = var.user2_id == data.alicloud_account.current.id ? true : false } # provider provider "alicloud" { alias = "user1" region = var.region assume_role { role_arn = local.user1_is_admin ? null : format("acs:ram::%s:role/%s", var.user1_id, local.role_name) session_name = "AccountLandingZoneSetup" session_expiration = 999 } } provider "alicloud" { alias = "user2" region = var.region assume_role { role_arn = local.user2_is_admin ? null : format("acs:ram::%s:role/%s", var.user2_id, local.role_name) session_name = "AccountLandingZoneSetup" session_expiration = 999 } } module "user1_vpc" { source = "vpc" providers = {alicloud: alicloud.user1} vpc_cidr = var.user1_vpc_cidr pod_vsw_cidr = var.user1_pod_vsw_cidr node_vsw_cidr = var.user1_node_vsw_cidr zone_id = var.zone_id } module "user2_vpc" { source = "vpc" providers = {alicloud: alicloud.user2} vpc_cidr = var.user2_vpc_cidr pod_vsw_cidr = var.user2_pod_vsw_cidr node_vsw_cidr = var.user2_node_vsw_cidr zone_id = var.zone_id } resource "alicloud_cen_instance" "cen" { provider = alicloud.user1 cen_instance_name = "云上企业网络" } resource "alicloud_cen_transit_router" "tr" { provider = alicloud.user1 cen_id = alicloud_cen_instance.cen.id } resource "alicloud_cen_instance_grant" "grant" { provider = alicloud.user2 cen_id = alicloud_cen_instance.cen.id child_instance_id = module.user2_vpc.vpc_id cen_owner_id = var.user1_id } resource "alicloud_cen_transit_router_vpc_attachment" "vpc_att" { provider = alicloud.user1 count = 2 transit_router_attachment_name = format("vpc_attachment_%s", count.index) cen_id = alicloud_cen_instance.cen.id transit_router_id = alicloud_cen_transit_router.tr.transit_router_id vpc_id = [module.user1_vpc.vpc_id, module.user2_vpc.vpc_id][count.index] vpc_owner_id = count.index == 0? null : var.user2_id zone_mappings { zone_id = var.zone_id vswitch_id = [module.user1_vpc.pod_vsw_id, module.user2_vpc.pod_vsw_id][count.index] } depends_on = [alicloud_cen_instance_grant.grant] } resource "alicloud_route_entry" "route_entry1" { provider = alicloud.user1 for_each = toset([var.user1_vpc_cidr, var.user2_vpc_cidr]) route_table_id = module.user1_vpc.route_table_id destination_cidrblock = each.key nexthop_type = "Attachment" nexthop_id = alicloud_cen_transit_router_vpc_attachment.vpc_att[0].transit_router_attachment_id } resource "alicloud_route_entry" "route_entry2" { provider = alicloud.user2 for_each = toset([var.user1_vpc_cidr, var.user2_vpc_cidr]) route_table_id = module.user2_vpc.route_table_id destination_cidrblock = each.key nexthop_type = "Attachment" nexthop_id = alicloud_cen_transit_router_vpc_attachment.vpc_att[1].transit_router_attachment_id } resource "alicloud_cen_transit_router_route_table" "route_table" { provider = alicloud.user1 transit_router_id = alicloud_cen_transit_router.tr.transit_router_id } resource "alicloud_cen_transit_router_route_entry" "route_entry" { count = 2 provider = alicloud.user1 transit_router_route_table_id = alicloud_cen_transit_router_route_table.route_table.transit_router_route_table_id transit_router_route_entry_destination_cidr_block = [var.user1_vpc_cidr, var.user2_vpc_cidr][count.index] transit_router_route_entry_next_hop_type = "Attachment" transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.vpc_att.*.transit_router_attachment_id[count.index] } resource "alicloud_cen_transit_router_route_table_association" "association" { provider = alicloud.user1 count = 2 transit_router_route_table_id = alicloud_cen_transit_router_route_table.route_table.transit_router_route_table_id transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.vpc_att.*.transit_router_attachment_id[count.index] } module "user1_k8s" { source = "k8s" providers = {alicloud: alicloud.user1} pod_vsw_id = module.user1_vpc.pod_vsw_id node_vsw_id = module.user1_vpc.node_vsw_id service_cidr = var.user1_service_cidr } module "user2_k8s" { source = "k8s" providers = {alicloud: alicloud.user2} pod_vsw_id = module.user2_vpc.pod_vsw_id node_vsw_id = module.user2_vpc.node_vsw_id service_cidr = var.user2_service_cidr }