solution/automation/account-factory/step/auth-authorize-role/main.tf (46 lines of code) (raw):

locals { account_json = fileexists("../var/account.json") ? jsondecode(file("../var/account.json")) : {} account_id = var.account_id == "" ? local.account_json["account_id"] : var.account_id policy_name = var.policy_name policy_document = var.policy_document attach_roles = var.attach_roles attach_users = var.attach_users reader_name = var.reader_name reader_policy_type = var.reader_policy_type reader_policy_name = var.reader_policy_name } provider "alicloud" { alias = "rd_role" assume_role { role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", local.account_id) session_name = "AccountLandingZoneSetup" session_expiration = 999 } } # Create policy resource "alicloud_ram_policy" "policy" { provider = alicloud.rd_role policy_name = local.policy_name policy_document = local.policy_document description = "create by Terraform" force = true } # Add policy to user resource "alicloud_ram_user_policy_attachment" "user_attach" { provider = alicloud.rd_role for_each = toset(local.attach_users) policy_name = alicloud_ram_policy.policy.name policy_type = alicloud_ram_policy.policy.type user_name = each.value } # Add policy to role resource "alicloud_ram_role_policy_attachment" "role_attach" { provider = alicloud.rd_role for_each = toset(local.attach_roles) policy_name = alicloud_ram_policy.policy.name policy_type = alicloud_ram_policy.policy.type role_name = each.value } # Add policy to reader role resource "alicloud_ram_role_policy_attachment" "reader_attach" { provider = alicloud.rd_role policy_name = local.reader_policy_name policy_type = local.reader_policy_type role_name = local.reader_name }