Terraform / GCP:ssh键未添加到metdata

时间:2019-05-24 13:55:32

标签: ssh google-cloud-platform terraform

我正在尝试使用terraform在项目级别将ssh-key添加到我的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上手动添加完全相同的键即可正常工作。至此,我相信我已经尝试了一切,将所有Google搜索结果的第一页都读取到“ terraform gcp add ssh key”和类似的查询中……我不知所措。

1 个答案:

答案 0 :(得分:0)

问题是ssh密钥已添加到另一个项目中。 我从Google的tutorial on GCP/Terraform开始。首先使用 gcloud 工具创建一个通用项目。然后继续使用该通用项目创建帐户。这是必要的,因为您需要用户针对其API运行Terraform。然后,他们创建一个 new 项目,以便在您每次应用时使这些用户具有地形。初始创建后,不会触摸使用gcloud创建的通用项目。 如果您从 google_compute_project_metadata_item.ssh-keys 资源中省略“ project”参数,它将使用通用项目并在其中添加ssh密钥-至少在我的情况下。

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