Невозможно создать образ с упаковщиком в Google Cloud из-за ошибки сервисного аккаунта

  • Я создал сервисный аккаунт в Gcloud.
  • Установил Gcloud на свой Mac.

Когда я запускаю свой шаблон упаковщика, он жалуется на эту учетную запись, откуда я понятия не имею, откуда он.

Шаблон упаковщика:

{
  "builders": [
    {
      "type": "googlecompute",
      "account_file": "/Users/Joe/Downloads/account.json",
      "project_id": "rare-truck-123456",
      "source_image": "centos-7-v20180129",
      "zone": "us-west1-a",
      "ssh_username": "centos"
    }
  ]
}

Ошибка:

➜  packer git:(master) ✗ packer build release_google_image.json
googlecompute output will be in this color.

==> googlecompute: Checking image does not exist...
==> googlecompute: Creating temporary SSH key for instance...
==> googlecompute: Using image: centos-7-v20180129
==> googlecompute: Creating instance...
    googlecompute: Loading zone: us-west1-a
    googlecompute: Loading machine type: n1-standard-1
    googlecompute: Loading network: default
    googlecompute: Requesting instance creation...
    googlecompute: Waiting for creation operation to complete...
==> googlecompute: Error creating instance: 1 error(s) occurred:
==> googlecompute: 
==> googlecompute: * The resource '[email protected]' of type 'serviceAccount' was not found.
Build 'googlecompute' errored: Error creating instance: 1 error(s) occurred:

* The resource '[email protected]' of type 'serviceAccount' was not found.

==> Some builds didn't complete successfully and had errors:
--> googlecompute: Error creating instance: 1 error(s) occurred:

* The resource '[email protected]' of type 'serviceAccount' was not found.

==> Builds finished but no artifacts were created.

Почему он пытается использовать [email protected]?

Я создал учетную запись службы с разрешениями compute admin v1 в моем проекте в облаке Google, загрузил свой json-файл и переименовал его в accounts.json. Имя этой служебной учетной записи другое ([email protected]), но упаковщик, похоже, игнорирует его и ищет какую-то странную учетную запись.

Даже моя команда cli gcloud info возвращает правильную учетную запись службы:

Google Cloud SDK [188.0.1]

Platform: [Mac OS X, x86_64] ('Darwin', 'Alexs-MacBook-Pro.local', '16.7.0', 'Darwin Kernel Version 16.7.0: Thu Jan 11 22:59:40 PST 2018; root:xnu-3789.73.8~1/RELEASE_X86_64', 'x86_64', 'i386')
Python Version: [2.7.14 (default, Sep 25 2017, 09:53:22)  [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)]]
Python Location: [/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python]
Site Packages: [Disabled]

Installation Root: [/Users/Joe/Downloads/google-cloud-sdk]
Installed Components:
  core: [2018.02.08]
  gsutil: [4.28]
  bq: [2.0.28]
System PATH: [/Users/Joe/Downloads/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin]
Python PATH: [/Users/Joe/Downloads/google-cloud-sdk/lib/third_party:/Users/Joe/Downloads/google-cloud-sdk/lib:/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/lib/python27.zip:/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/lib/python2.7:/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin:/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac:/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages:/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk:/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old:/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload]
Cloud SDK on PATH: [True]
Kubectl on PATH: [False]

Installation Properties: [/Users/Joe/Downloads/google-cloud-sdk/properties]
User Config Directory: [/Users/Joe/.config/gcloud]
Active Configuration Name: [default]
Active Configuration Path: [/Users/Joe/.config/gcloud/configurations/config_default]

Account: [[email protected]]
Project: [rare-truck-123456]

Current Properties:
  [core]
    project: [rare-truck-123456]
    account: [[email protected]]
    disable_usage_reporting: [True]
  [compute]
    region: [us-west1]
    zone: [us-west1-a]

Logs Directory: [/Users/Joe/.config/gcloud/logs]
Last Log File: [/Users/Joe/.config/gcloud/logs/2018.02.09/15.51.18.911677.log]

git: [git version 2.14.3 (Apple Git-98)]
ssh: [OpenSSH_7.4p1, LibreSSL 2.5.0]

person alexfvolk    schedule 10.02.2018    source источник


Ответы (1)


Экземпляры Google Compute Engine используют учетную запись служб по умолчанию для лучшей интеграции с платформой Google.

Как вы можете прочитать в документации [1]: «(...) Если пользователь будет управлять экземплярами виртуальных машин, которые настроены для работы в качестве учетной записи службы, вы также должны предоставить роль role / iam.serviceAccountActor».

Вам необходимо добавить роль «Пользователь учетной записи службы» в свою учетную запись службы, чтобы иметь возможность создавать экземпляры Google Compute Engine.

[1] https://cloud.google.com/iam/docs/understanding-roles#compute_name_short_roles

person Pol Arroyo    schedule 13.02.2018
comment
Есть ли еще какая-нибудь роль, которую мне нужно добавить? - person Harith; 20.05.2018