使用 Packer Google Compute Builder 创建映像,但没有嵌入项目用户(cloud-init)
Posted
技术标签:
【中文标题】使用 Packer Google Compute Builder 创建映像,但没有嵌入项目用户(cloud-init)【英文标题】:Create image with Packer Google Compute Builder but without project users baked in (cloud-init) 【发布时间】:2022-01-20 17:46:52 【问题描述】:我正在使用 Google Compute Builder 创建打包程序映像:
source "googlecompute" "github-runner"
image_name = "github-runner-$replace(var.runner_version, ".", "-")-v$var.custom_version"
image_family = "github-runner"
project_id = "xxx"
source_image_family = "ubuntu-2004-lts"
ssh_username = "packer"
use_internal_ip = true
zone = "europe-west4-c"
build
sources = [
"source.googlecompute.github-runner"
]
但是,由于 cloud-init,所有项目用户都在构建器 VM 中进行配置,因此在最终映像中进行配置。
是否有任何选项可以跳过在构建器 VM 上创建项目的用户?
【问题讨论】:
guest-agent
的帐户管理功能(使用操作系统登录时除外)负责配置帐户。您可以在代理的配置 (accounts_daemon
) 中禁用此功能。如果您不想安装代理,则可能必须从头开始创建映像。
两个有助于解释这一点的链接:cloud.google.com/compute/docs/connect/restrict-ssh-keys 和 docs.bridgecrew.io/docs/bc_gcp_networking_8
【参考方案1】:
所以解决方案是将block-project-ssh-keys = "true"
添加到元数据中。最终声明:
source "googlecompute" "github-runner"
image_name = "github-runner-$replace(var.runner_version, ".", "-")-v$var.custom_version"
image_family = "github-runner"
project_id = "xxx"
source_image_family = "ubuntu-2004-lts"
ssh_username = "packer"
use_internal_ip = true
zone = "europe-west4-c"
metadata =
block-project-ssh-keys = "true"
build
sources = [
"source.googlecompute.github-runner"
]
【讨论】:
以上是关于使用 Packer Google Compute Builder 创建映像,但没有嵌入项目用户(cloud-init)的主要内容,如果未能解决你的问题,请参考以下文章
ruby Google Cloud Compute使用Rotate创建快照
使用 Go 在 Google Container/Compute Engine 中登录到 Google Cloud
在 Google Compute Engine 上使用 gcloud 安装 node.js
Google Compute Engine:使用另一个项目的快照?