example/03-complex-enterprise/foundations/main.tf (81 lines of code) (raw):

##################################################################### ######################## 三号样板间基础配置 ######################## ##################################################################### # Terraform Backend 配置 terraform { backend "oss" {} } # 配置 AK、Region 等信息 provider "alicloud" { access_key = var.access_key secret_key = var.secret_key region = var.region } # assumerole到SharedServices账号 provider "alicloud" { alias = "sharedservices" access_key = var.access_key secret_key = var.secret_key region = var.region assume_role { role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", alicloud_resource_manager_account.rd_account_SharedServices.id) session_name = "SharedAccountLandingZoneSetup" session_expiration = 999 } } # 获取当前主账号的信息 data "alicloud_account" "current_account" { } ######################## 步骤一 [企业管理账号创建和初始化]################ # 手工操作,需要增加发票信息,否则主账号不能被选为费用结算账号 ######################## 步骤二 [云账号安全加固]######################## # 创建云管理员组 resource "alicloud_ram_group" "cloud_admin_group" { name = "CloudAdminGroup" comments = "云管理员组" force = true } # 为云管理员组授权 resource "alicloud_ram_group_policy_attachment" "cloud_admin_group_policy_attachment" { policy_name = "AdministratorAccess" policy_type = "System" group_name = alicloud_ram_group.cloud_admin_group.name } # # 创建用户: admin # resource "alicloud_ram_user" "user_admin" { # name = var.basic_settings.admin_sub_account_name # display_name = "管理员" # } # # 将admin加入云管理员组 # resource "alicloud_ram_group_membership" "membership_admin" { # group_name = alicloud_ram_group.cloud_admin_group.name # user_names = [alicloud_ram_user.user_admin.name] # } # 密码策略 resource "alicloud_ram_account_password_policy" "password_policy" { minimum_password_length = 8 require_lowercase_characters = true require_uppercase_characters = true require_numbers = true require_symbols = true hard_expiry = false max_password_age = 90 password_reuse_prevention = 8 max_login_attempts = 5 } ######################## 步骤三 [资源结构和账号创建] #################### # 创建资源夹 Core resource "alicloud_resource_manager_folder" "rd_folder_core" { folder_name = var.basic_settings.resource_directory.core_directory_name } # 创建资源夹 Business ,作为以后放置业务相关账号的资源夹 resource "alicloud_resource_manager_folder" "rd_folder_Business" { folder_name = var.basic_settings.resource_directory.applications_directory_name } # 创建一个资源账号:SharedServices, 结算账号选择资源目录主账号 resource "alicloud_resource_manager_account" "rd_account_SharedServices" { display_name = var.basic_settings.shared_services_account_name folder_id = alicloud_resource_manager_folder.rd_folder_core.id payer_account_id = data.alicloud_account.current_account.id } ######################## 步骤三 [IT合规与审计] ######################### module "governance" { source = "./modules/governance" providers = { alicloud = alicloud } bucket_audit_logs = var.basic_settings.governance.bucket_enterprise_audit_logs trail_audit_logs = var.basic_settings.governance.trail_enterprise_audit_logs mns = var.basic_settings.governance.mns master_id = data.alicloud_account.current_account.id } ######################## 步骤四 [企业管理账号身份集成] ################### module "identity" { source = "./modules/identity" providers = { alicloud = alicloud alicloud.sharedservices = alicloud.sharedservices } shared_services_account_id = alicloud_resource_manager_account.rd_account_SharedServices.id business_folder_id = alicloud_resource_manager_folder.rd_folder_Business.id } ######################## 步骤五 [网络配置] ############################# module "networking" { source = "./modules/networking" providers = { alicloud = alicloud alicloud.sharedservices = alicloud.sharedservices } network_settings = var.network_settings region = var.region }