【问题标题】:Error when creating gcp vm instance via terraform通过 terraform 创建 gcp vm 实例时出错
【发布时间】:2021-09-26 12:34:37
【问题描述】:

服务帐户拥有创建 vm 实例的所有权限(服务帐户用户、项目所有者、项目编辑者)。当我运行 terraform 时,会发生这种情况:

│ Error: Error waiting for instance to create: The user does not have access to service account 'mymail@gmail.com'.  User: 'terraform@direct-keel-275713.iam.gserviceaccount.com'.  Ask a project owner to grant you the iam.serviceAccountUser role on the service account
│ 
│ 
│   with module.vm.google_compute_instance.icinga,
│   on modules/vm/main.tf line 23, in resource "google_compute_instance" "icinga":
│   23: resource "google_compute_instance" "icinga" {

【问题讨论】:

    标签: google-cloud-platform terraform virtual-machine terraform-provider-gcp


    【解决方案1】:

    您设置 Terraform 的方式有问题。

    错误消息包含文本用户无权访问服务帐户“mymail@gmail.com”。

    身份 mymail@gmail.com 不是服务帐户。

    正确设置凭据后,Terraform 用于授权的身份必须具有角色 roles/iam.serviceAccountUser 或类似角色。您选择的角色必须具有 iam.serviceAccounts.actAs 权限。

    Service Accounts Roles

    注意:roles/compute.admin等角色没有iam.serviceAccounts.actAs权限。

    Terraform 默认会查找环境变量 GOOGLE_APPLICATION_CREDENTIALS。该变量应指向服务帐户 JSON 密钥文件的完整路径。

    接下来,Terraform 将查找由 gcloud auth application-default login 创建的 CLI/SDK 凭据。

    我更喜欢在 Terraform HCL 中指定服务帐户(通常在变量文件中)。

    provider "google" {
      project = "PROJECT_ID"
      credentials = "/path/to/service-account.json"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-16
      • 2021-04-22
      • 2019-08-12
      • 2018-09-24
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 2021-05-24
      相关资源
      最近更新 更多