Я загрузил ключ учетной записи службы 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
Пожалуйста, дайте мне знать, почему ключ учетной записи службы не экспортируется должным образом в файл или есть ли что-то, что необходимо исправить.
Вы должны настроить переменную GOOGLE_APPLICATION_CREDENTIALS
https://cloud.google.com/docs/authentication/
Вы можете скачать файл JSON из учетной записи службы.
В разделе «IAM и администратор»> «Учетные записи служб» щелкните 3 точки учетной записи службы, которую вы хотите использовать, и выберите «Создать ключ»> JSON> Создать.
Это сгенерирует / загрузит файл JSON.
Если этот экземпляр-бастион является экземпляром 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)