使用 Terraform 创建 GCP 项目

3
我正在尝试使用terraform创建Google Cloud项目。我正在参考以下链接作为参考... https://femrtnz.medium.com/automating-gcp-projects-with-terraform-d571f0d94742 我按照介绍的项目创建和IAM角色的步骤进行操作。似乎你需要一个单独的项目和服务账户来使用terraform创建项目。我还参考了谷歌关于此主题的文档... https://cloud.google.com/community/tutorials/managing-gcp-projects-with-terraform 所以,我在我的main.tf中得到了这个配置。
# This is the provider used to spin up the gcloud instance
provider "google" {
  credentials = "/path/to/seed-credentials.json"
}

# Locks the version of Terraform for this particular use case
terraform {
  required_version = "0.14.6"
}


resource "random_id" "id" {
  byte_length = 4
  prefix      = var.project_name
}

resource "google_project" "project" {
  name            = var.project_name
  project_id      = random_id.id.hex
  billing_account = var.billing_account
}

output "project_id" {
  value = google_project.project.project_id
 }

我创建了一个远程后端。

terraform {
 backend "gcs" {
   bucket  = "seed-bucket"
   prefix  = "terraform/state"
   credentials = "/path/to/seed-credentials.json"
 }
}

以下是我的variables.tf文件

variable "project_name" {
  type = string
}

variable "billing_account" {
  type = string
}

最后但同样重要的是我的terraform.tfvars文件。

project_name = "test-project"
billing_account = "1234-5678-90xxx"

Terraform init会配置远程后端。Terraform plan没有错误。但是,当我运行terraform apply时,出现以下错误:"Error: failed pre-requisites: missing permission on "billingAccounts/1234-5678-9xxx": billing.resourceAssociations.create"。 现在,这个账户没有组织。我猜这就是给我带来的错误? Medium博客文章的作者提到了“首先你需要创建一个基于你的域名的组织”。 我从未在我的Google项目中使用过组织。我进入我的Google控制台,它说我需要域验证才能为我的账户获得组织。这似乎很麻烦。我真的不想为此费力去获取一个新的域名。现在我的代码正确吗?我猜测错误源于我没有“组织”。是否有一种简单的方法可以不进行域验证就获得组织?

3个回答

4
错误信息“billingAccounts/1234-5678-9xxx上缺少权限:billing.resourceAssociations.create”表示该服务账号没有将计费帐户链接到新项目的权限。
  • 进入 Google Cloud 控制台中的计费页面Billing
  • 在窗口右上方,单击 “显示信息面板”。
  • 选择计费账户,然后单击 “添加成员”。
  • 输入服务账号电子邮件地址。
  • 选择角色 Billing Account User
  • 单击保存。
现在,服务账号已经获得了将计费账户附加到新项目的权限。 云计费访问控制概述

2
我曾经遇到同样的错误,并尝试了这个解决方案。它奏效了!我正在按照这个教程通过“服务帐户”和“Terraform”创建项目:https://cloud.google.com/community/tutorials/managing-gcp-projects-with-terraform项目、组织和计费是权限的三个独立组件。仅授予“组织”级别是不够的。还应该从“计费账户”中授予权限。 - hadican

0

我也遇到了类似的问题,403错误,并且它正在使用我的个人谷歌凭据,然而原因是在测试期间删除了凭据文件详细信息,忘记再次添加。因此,它正在使用我的个人帐户凭据,在正确添加凭据文件后,它可以正常工作。


0

一旦按照上述建议分配了计费管理员权限,可以使用以下流程授予项目创建者角色。

转到GCP控制台并搜索“管理资源页面”(Google控制台)-->选择组织-->权限选项卡(右侧窗口)-->添加成员-->将项目创建者角色分配给Terraform服务帐户(保存)

验证:您将在此页面(资源管理器页面)的右侧面板的“角色/成员”部分下看到Terraform服务帐户列在“项目创建者”下。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接