首页 > 解决方案 > 为什么 Terraform 的 GCP google_project_iam_member 资源需要这么长时间才能部署?

问题描述

google_project_iam_member在 Terraform 的一个计数循环中部署了 15 个资源。部署每个资源(并行运行)大约需要 8 分钟,我认为可能有问题。没有其他资源需要这么长时间。编码:

## This code converts the user_permissions map to the format [ {members = x, role = y}, ...  ]

locals {
  permissions = flatten([for group in var.user_permissions :
    [for tuple in setproduct(group.emails, group.roles) : {
      members = tuple[0],
      roles   = tuple[1]
  }]])
}

resource "google_project_iam_member" "ib_admins_access" {
  count   = length(local.permissions)
  project = var.project_id
  role    = "roles/${local.permissions[count.index].roles}"
  member  = local.permissions[count.index].members
}

user_permissions地图格式如下:

user_permissions = {
 group_x = {
   emails = [<emails>]
   roles = [
     <roles>
   ]
 }

这两项政策花了 20 多分钟。他们是2 封不同storage.objectAdminviewer电子邮件

module.iam.google_project_iam_member.ib_access_predefined_roles[6]: Still creating... [22m1s elapsed]
module.iam.google_project_iam_member.ib_access_predefined_roles[15]: Still creating... [22m1s elapsed]

我正在尝试像上面那样解释字典并以非权威方式部署它。我认为这可能与政策更新有关,例如政策相互争斗。我考虑过延迟或按顺序执行,但在循环内找不到资源或 terraform 命令来执行此操作。有一个更好的方法吗?我的代码有什么问题?

标签: google-cloud-platformterraformterraform-provider-gcpgoogle-iam

解决方案


我使用的是 WSL 2,那里的互联网连接可能存在一些问题。当我更改为 PowerShell 时,它的运行速度要快得多。


推荐阅读