Невозможно экспортировать ключ учетной записи службы в Terraform #GCP

Я загрузил ключ учетной записи службы GCP в свою локальную систему. В Terraform я установил GOOGLE_APPLICATION_CREDENTIALS в качестве пути к этому файлу в части сценария запуска моего экземпляра бастиона. Ниже приведен фрагмент:

variable "credentials"{

default="C:/GCP/service-account-key.json"

}

. . . . . .


metadata= {

startup-script=<<SCRIPT

export GOOGLE_APPLICATION_CREDENTIALS="${file("${var.credentials}")}"

SCRIPT

}

Позже я написал сценарий #! / Bin / bash для сохранения этих учетных данных в другом файле, как показано ниже:

#!/bin/bash

printf "$GOOGLE_APPLICATION_CREDENTIALS" > /home/ubuntu/credentials

Но когда я открываю указанный выше файл учетных данных, файл обрезается, как показано ниже, и весь ключ отсутствует :

{

  type: service_account,

  project_id: acn-devopsgcp,

  private_key_id: xxxxx,

  private_key: -----BEGIN  

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

0
задан 1 October 2019 в 14:23
2 ответа

Если этот экземпляр-бастион является экземпляром Google Cloud Compute Engine (GCE), вам не нужно передавать ключи JSON на виртуальную машину.

Вы должны использовать учетную запись службы, которая является экземпляром GCE. работает как - любой инструмент, использующий GCP API / SDK (например, gsutil или gcloud ), будет использовать эту учетную запись службы по умолчанию, если не предоставлены учетные данные с использованием переменных среды.

Каждый Проекту GCP предоставляется учетная запись службы «вычислений по умолчанию», или вы можете создать ее специально для рассматриваемого экземпляра с помощью Terraform и при необходимости предоставить разрешения через IAM.


Конкретно отвечая на ваш вопрос, однако, ваш ключ не развертывается из-за вложенного двойного цитаты. Ваш ключ JSON содержит двойные кавычки, которые, если их не экранировать, завершат кавычку, начинающую строку.

Если у вас есть , чтобы использовать файл ключа JSON, я бы развернул его на виртуальной машине как файл, тогда прочтите файл в сценарии запуска:

#!/bin/bash

cat <<EOF > /etc/gce_credentials.json
${file("${var.credentials}")}
EOF

export GOOGLE_APPLICATION_CREDENTIALS=$(cat /etc/gce_credentials.json)
0
ответ дан 5 December 2019 в 00:33

Необходимо настроить переменную GOOGLE_APPLICATION_CREDENTIALS

https://cloud.google.com/docs/authentication/

Вы можете загрузить файл JSON из учетной записи службы.

В разделе «IAM и администратор»> «Учетные записи служб» щелкните 3 точки учетной записи службы, которую вы хотите использовать, и выберите «Создать ключ»> JSON> Создать

. Это создаст / загрузит файл JSON.

0
ответ дан 5 December 2019 в 00:33

Теги

Похожие вопросы