首页 > 解决方案 > 无法使用 GCP 的打包程序创建映像(使用 VM)

问题描述

我想用 packer build 命令创建图像,但是当我这样做时,我遇到了这个错误:

googlecompute: * The user does not have access to service account 'service-76100000418@compute-system.iam.gserviceaccount.com'.  User: 'farzin-second-test-project@farzin-second-test-project.iam.gserviceaccount.com'.  Ask a project owner to grant you the iam.serviceAccountUser role on the service account

我已将服务帐户用户角色、计算管理员和计算实例管理员 (v1) 添加到我的服务帐户。我还启用了计算 API,但在我的虚拟盒子中我使用了 centos,在这里我使用了这个无法正常工作的打包程序构建。在那里我创建了一个带有名称凭据的文件并将 json 密钥放入其中,并且我制作了我的打包程序模板,我还应该说我的模板已经过验证。

有人有什么想法吗?奇怪的是它要求我将此权限授予用户,但添加后仍然无法正常工作。

标签: google-cloud-platformvirtualboxpacker

解决方案


您必须在您的 GCP 帐户上启用所有闲置 API:

gcloud services enable sourcerepo.googleapis.com
gcloud services enable compute.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable storage-api.googleapis.com

还要确保您的服务帐户具有适当的权限(并且您使用的是正确的帐户):

CLOUD_BUILD_ACCOUNT=$(gcloud projects get-iam-policy $PROJECT --filter="(bindings.role:roles/cloudbuild.builds.builder)"  --flatten="bindings[].members" --format="value(bindings.members[])")

gcloud projects add-iam-policy-binding $PROJECT \
  --member $CLOUD_BUILD_ACCOUNT \
  --role roles/editor

您还可以查看文档:Building VM images using PackerCreate a Cloud Build image factory using Packer


推荐阅读