gcloud auth activit-service-account из JSON для установки текущего проекта - PullRequest
0 голосов
/ 20 декабря 2018

Я создал учетную запись службы и получил обратно файл учетных данных в формате JSON, который выглядит следующим образом.

{
  "type": "service_account",
  "project_id": "myproject",
  "private_key_id": "db0cd27ba7d2acad610b854c04f0aa8ad67ad5fc",
  "private_key": "REDACTED",
  "client_email": "gitlab-ci@myproject.iam.gserviceaccount.com",
  "client_id": "558691835510594518717",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/gitlab-ci%40myproject.iam.gserviceaccount.com"
}

Затем я могу активировать эту учетную запись службы следующим образом

# gcloud auth activate-service-account --key-file myproject-5ddb0cd20b85.json
Activated service account credentials for: [gitlab-ci@myproject.iam.gserviceaccount.com]

Посколькуфайл JSON включает project_id, я ожидал, что это будет установлено в активной конфигурации, но это не так.

# gcloud config configurations list
NAME     IS_ACTIVE  ACCOUNT                                             PROJECT  DEFAULT_ZONE  DEFAULT_REGION
default  True       gitlab-ci@myproject.iam.gserviceaccount.com

Есть ли какой-нибудь способ установить проект из файла JSON при активацииучетная запись службы?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

project_id из файла JSON служебной учетной записи не должен автоматически устанавливаться в качестве проекта по умолчанию.

Наличие этой функции зависит от варианта использования.Некоторые вызовы API выполняются с помощью project_id из учетной записи службы, а некоторые используют заданный в настоящее время проект по умолчанию, поэтому обобщать его было бы неуместно.

В качестве обходного пути я создал скрипт bash, которыйдостигает того, что вы ищете:

gcloud config set project $(cat 'key.json' | jq '.project_id' | sed -e 's/^"//' -e 's/"$//')
0 голосов
/ 20 декабря 2018

Поскольку JSON-файл фактически используется для аутентификации, а project_id используется для аутентификации, он не сохраняется в активной конфигурации.

...