【问题标题】:Terraform/GCP: ssh-keys not being added to metdataTerraform/GCP:未将 ssh 密钥添加到元数据中
【发布时间】:2019-10-11 03:27:36
【问题描述】:

我正在尝试使用 terraform 在项目级别将 ssh-keys 添加到我的 Google Cloud 项目中:

resource "google_compute_project_metadata_item" "oslogin" {
  project = "${google_project_services.myproject.project}"
  key     = "enable-oslogin"
  value   = "false"
}

resource "google_compute_project_metadata_item" "block-project-ssh-keys" {
  project = "${google_project_services.myproject.project}"
  key     = "block-project-ssh-keys"
  value   = "false"
}

resource "google_compute_project_metadata_item" "ssh-keys" {
  key   = "ssh-keys"
  value = "user:ssh-rsa myverylongpublickeythatireplacewithtexthereforobviousreasons user@computer.local"

  depends_on = [
    "google_project_services.myproject",
  ]
}

我尝试了 2 个元数据标志 oslogin 和 block-project-ssh-keys 的所有类型的组合,它们总是可以毫无问题地设置。但是 ssh 密钥永远不会出现在 GCP 的 Web GUI 中,更不用说 authorized_keys 文件了。我什至尝试添加depends_on,以确保在添加密钥之前项目存在,但这也无济于事。

然而,Terraform 说:

google_compute_project_metadata_item.ssh-keys: Creation complete after 8s (ID: ssh-keys)

在 Web GUI 上手动添加完全相同的密钥可以正常工作。在这一点上,我相信我已经尝试了一切,阅读所有第一页谷歌结果到 'terraform gcp add ssh key' 和类似的查询......我束手无策。

【问题讨论】:

    标签: ssh google-cloud-platform terraform


    【解决方案1】:

    问题是 ssh 密钥被添加到不同的项目中。 我从谷歌的tutorial on GCP/Terraform 开始。这将首先使用 gcloud 工具创建一个通用项目。然后继续使用该通用项目创建帐户。这是必要的,因为您需要用户针对他们的 API 运行 terraform。然后他们创建一个新的项目,每次您应用时使用 terraform 帮助这些用户。使用 gcloud 创建的通用项目在初始创建后没有被触及。 如果您从 google_compute_project_metadata_item.ssh-keys 资源中省略“项目”参数,它使用通用项目并在那里添加了 ssh 密钥 - 至少在我的情况下。

    解决方案:明确地将 project 参数添加到元数据资源项,以确保将其添加到正确的项目中

    【讨论】:

    • "将项目参数显式添加到元数据资源项,以确保将其添加到正确的项目中" 这就是我所需要的。谢谢!
    • @Mia 请在我的原始帖子中查看代码 sn-p。与前 2 个块不同,ssh-keys 块中缺少“project”参数。只需将其添加到此处即可。
    猜你喜欢
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2021-07-18
    • 2018-03-15
    • 1970-01-01
    • 2021-09-06
    • 2012-07-31
    • 2021-06-23
    相关资源
    最近更新 更多