我正在尝试使用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”和类似的查询中……我不知所措。
答案 0 :(得分:0)
问题是ssh密钥已添加到另一个项目中。 我从Google的tutorial on GCP/Terraform开始。首先使用 gcloud 工具创建一个通用项目。然后继续使用该通用项目创建帐户。这是必要的,因为您需要用户针对其API运行Terraform。然后,他们创建一个 new 项目,以便在您每次应用时使这些用户具有地形。初始创建后,不会触摸使用gcloud创建的通用项目。 如果您从 google_compute_project_metadata_item.ssh-keys 资源中省略“ project”参数,它将使用通用项目并在其中添加ssh密钥-至少在我的情况下。
解决方案::将 project 参数明确添加到元数据资源项中,以确保将其添加到正确的项目中