【问题标题】:Error when creating GCP VPC with Terraform - cannot fetch token: unexpected EOF使用 Terraform 创建 GCP VPC 时出错 - 无法获取令牌:意外 EOF
【发布时间】:2020-11-08 17:51:29
【问题描述】:

当我使用 terraform 创建网络 vpc 时,它显示错误“oauth2:无法获取令牌:意外 EOF”有人知道这是什么意思吗?

这是我的 terraform 代码:​​

provider "google" {
  version = "3.5.0"
  credentials = file("my_service_account_key_json_file")
  project = "myproject"
  region  = "us-central1"
  zone    = "us-central1-c"
}

resource "google_compute_network" "vpc_network" { #line 9
  name = "terraform-network"
}

terraform {
  backend "gcs" {
    bucket = "my_bucket"
    prefix = "my_folder"
    credentials = "my_service_account_key_json_file"
  }
}

这是我在运行 terraform apply 时遇到的错误:

google_compute_network.vpc_network: Creating...

Error: Error creating Network: Post 
https://www.googleapis.com/compute/v1/projects/<myproject>/global/networks?alt=json: oauth2: 
cannot fetch token: unexpected EOF

  on main.tf line 9, in resource "google_compute_network" "vpc_network":
  9: resource "google_compute_network" "vpc_network" {

【问题讨论】:

  • 在我的 GCP 项目中使用具有编辑角色的服务帐户,我能够在自己的帐户上运行此程序,没有任何问题。我使用与 Terraform v0.13.5 相同的 Google 提供程序版本(此时最新)
  • 你使用的terraform版本是什么,可以尝试更新一下,同时检查相关API是否启用
  • 验证您的服务帐户是否拥有正确的权限,并尝试刷新或重新创建您的 outh2 访问令牌。我强烈建议您阅读此document,了解使用 OAuth 2.0 授权请求
  • @Tanjin:是 Terraform v0.12.29,provider.google v3.5.0。我怀疑服务帐户密钥 json 文件有问题。但它是由 gcp 创建的。我只需单击“添加密钥”到我的服务帐户,选择 json 格式并下载它。我是否需要做任何其他事情,例如更改类似于 AWS 密钥对的 chmod?
  • @tanjin:我点击了你的链接,现在可以使用了。唯一的区别是在设置服务帐户权限时,我遵循的原始教程说我只需选择角色为编辑器,而您提供的链接说我需要设置几个管理员角色,如存储管理员,计算管理员等,我猜想Editor的作用是不够的。我是 GCP 的新手,所以不太清楚这意味着什么,但至少我现在可以运行 terraform。非常感谢。

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


【解决方案1】:

此答案的创建部分基于 cmets 中提供的答案来支持社区。​​em>

这里有几件事要验证:

  1. 验证身份验证密钥 json 文件和路径。

    .json 身份验证密钥文件的正确定义是:credentials = file("/home/service-account-key.json"),其中文件“service-account-key.json”位于目录“/home/”中,并使用指南 Creating and managing service account keys 获得.

  2. 验证Service Account User role

    在这种特殊情况下,该角色应该是像 Compute Network Admin role 这样为创建 VPC 授予的角色,您可以在此处找到完整的 Compute Engine IAM roles and permissions 参考。

看看这个How to,它描述了创建服务帐户、提供正确权限并在 terraform 中使用它的整个过程。

【讨论】:

    猜你喜欢
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2021-08-06
    相关资源
    最近更新 更多