我想用packer build命令创建镜像,但当我这样做时,我面临着这个错误。
googlecompute: * The user does not have access to service account '[email protected]'. 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,而在这里,我使用这个packer build不能正常工作。在那里,我创建了一个文件的名称凭证,并把json键在那里,我也做了我的包装器模板,我也应该说我的模板是有效的。
有人有什么想法吗?奇怪的是,它要求我把这个权限给用户,但加了之后还是不行。
你必须在你的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
你也可以看一下文档。使用Packer构建虚拟机镜像 和 使用 Packer 创建 Cloud Build 映像工厂.