【问题标题】:Creating automation with Terraform and Cloubuild on GCP在 GCP 上使用 Terraform 和 Cloubuild 创建自动化
【发布时间】:2020-07-31 07:36:39
【问题描述】:

我一直在使用带有 terraform 的 IaC 进行自动化测试,我希望从本教程 Manageing GCP Projects with Terraform 中采取这些步骤,并使用版本控制将它们自动化。

但是我遇到了一个抛出的错误

err: failed pre-requisites: missing permission on "billingAccounts/billingaccountid": billing.resourceAssociations.create

IAM TF 配置

resource "google_organization_iam_binding" "tfadmin" {


 org_id = var.org_id
  role    = "roles/billing.resourceAssociations.create"

  members = [
    "serviceAccount:tfadmin@project_id.iam.gserviceaccount.com",
  ]
}

resource "google_billing_account_iam_member" "binding" {
  billing_account_id = var.billing_account
  role               = "roles/billing.user"

  member            =  "serviceAccount:tfadmin@project_id.iam.gserviceaccount.com"



 }

resource "google_service_account" "tfadmin" {
  project      = google_project.project.project_id
  account_id   = "tfadmin"
  display_name = "tfadmin"

}
resource "google_project_iam_binding" "project_name" {
  project = google_project.project.project_id
  role    = "roles/bill.user"

  members = [
   "serviceAccount:${google_service_account.tfadmin.email}",  
    "user:var.billing_account_user",
  ]
}

resource "google_project_iam_policy" "project_id" {
  project     = google_project.project.project_id
  policy_data = data.google_iam_policy.tfadmin.policy_data
}

data "google_iam_policy" "tfadmin" {
  binding {
    role = "roles/resourcemanager.projectCreator"

    members = [
      "serviceAccount:tfadmin@project_id.iam.gserviceaccount.com",
    ]
  }
}

我正在寻找添加服务帐户以使用其他 gcp 服务(cloudsql、计算引擎、应用程序引擎)创建另一个 GCP 项目

我缺少的东西没有找到吗?

【问题讨论】:

  • 您是否使用 Cloud Build 触发 Terraform?
  • 是的,这与我创建的其他帖子相关。我希望能够将教程复制为自动化,而无需在 ci/cd 管道中提供密钥和其他机密信息。
  • 我遇到了同样的问题并解决了我在此处描述的问题:stackoverflow.com/questions/61053649/…

标签: google-cloud-platform terraform google-cloud-build


【解决方案1】:

Cloud Build 目前仅使用默认的 Cloud Build 服务帐号 <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com

当您在 Cloud Build 上运行 terraform 时,您可以不指定帐户密钥。

provider "google" {
//  Useless with Cloud Build
//  credentials = file("${var.CREDENTIAL_FILE}}")
  project = var.PROJECT_ID
  region = "europe-west1"
}

这样,使用环境的服务帐号。这里是 Cloud Build,因此是 Cloud Build 默认服务帐号。

在 Cloud Build 默认服务帐户上授予正确的角色,它应该可以工作。

【讨论】:

    猜你喜欢
    • 2020-07-21
    • 2018-09-09
    • 1970-01-01
    • 2020-06-16
    • 2021-06-13
    • 2021-05-24
    • 2021-12-16
    • 2019-05-07
    • 1970-01-01
    相关资源
    最近更新 更多