ssh - Terraform/GCP:未将 ssh 密钥添加到元数据中
问题描述
我正在尝试使用 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 的GCP/Terraform 教程开始。这将首先使用gcloud工具创建一个通用项目。然后继续使用该通用项目创建帐户。这是必要的,因为您需要用户针对他们的 API 运行 terraform。然后他们创建一个新项目,每次您申请时使用 terraform 为这些用户提供便利。使用 gcloud 创建的通用项目在初始创建后没有被触及。如果您从google_compute_project_metadata_item.ssh-keys资源中省略“项目”参数,它会使用通用项目并在那里添加 ssh 密钥 - 至少在我的情况下是这样。
解决方案:将项目参数显式添加到元数据资源项,以确保将其添加到正确的项目中
推荐阅读
- python-3.7 - 安装pandas和scipy时如何修复错误“错误:命令错误退出状态1”
- tensorflow - 标量和图形绘图的 Keras 层通道乘法
- daterangepicker - 单击到外部时,日期范围选择器可以保持打开状态吗?
- node.js - 使用 ESP-IDF 从 node.js 服务器发送图像到 ESP32
- python - 在没有 Selenium Python 的情况下获取当前浏览器 URL
- file-transfer - 远程接收文件进行数据分析
- java - com.microsoft.sqlserver.jdbc.SQLServerException:列、参数或变量 #9:找不到数据类型 json
- docker - Docker 无法运行
- google-compute-engine - 在偶尔完整备份 Google Cloud Compute Engine 之前删除增量快照
- c++ - C++:使用常量引用结构创建 getter