Настройка переменной среды для виртуальной машины Compute Engine - PullRequest
0 голосов
/ 27 августа 2018

Мне нужно установить переменную окружения на моей виртуальной машине в Google Compute Engine. Переменная, которую мне нужно установить, называется "GOOGLE_APPLICATION_CREDENTIALS", и в соответствии с документацией Google мне нужно установить ее значение на путь файла json. У меня два вопроса:

1: Можно ли установить эту переменную в интерфейсе Google Compute Engine на GCP?

2: Могу ли я использовать System.Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", Resources.googlecredentials.credentials);? Всякий раз, когда я пытаюсь установить эту переменную на своем локальном компьютере, я использую эту технику, но я устанавливаю значение для пути к файлу (локальный каталог). Однако, поскольку я сейчас использую виртуальную машину, мне было интересно, могу ли я установить переменную окружения для фактического содержимого файла ресурсов? Это позволяет мне встраивать учетные данные в само приложение.

Приветствия

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Временно сохраните свои учетные данные в файле

$ HOME / пример / г-credentials.json

{
  "foo": "bar"
}

Затем загрузите его в метаданные ваших проектов GCE в виде строки

gcloud compute project-info add-metadata \
    --metadata-from-file g-credentials=$HOME/example/g-credentials.json

Вы можете просматривать метаданные проектов GCE на облачной консоли, выполнив поиск metadata, или вы можете просмотреть их с помощью gcloud

gcloud compute project-info describe

Затем установите env var / load config в скрипте запуска вашей виртуальной машины.

$ HOME / пример / startup.txt

#! /bin/bash

# gce project metadata key where the config json is stored as a string
meta_key=g-credentials
env_key=GOOGLE_APPLICATION_CREDENTIALS
config_file=/opt/g-credentials.json
env_file=/etc/profile

# command to set env variable
temp_cmd="export $env_key=$config_file"

# command to write $temp_cmd to file if $temp_cmd doesnt exist w/in it
perm_cmd="grep -q -F '$temp_cmd' $env_file || echo '$temp_cmd' >> $env_file"

# set the env var for only for the duration of this script.
# can delete this if you don't start processes at the end of
# this script that utilize the env var.
eval $temp_cmd

# set the env var permanently for any SUBSEQUENT shell logins
eval $perm_cmd

# load the config from the projects metadata
config=`curl -f http://metadata.google.internal/computeMetadata/v1/project/attributes/$meta_key -H "Metadata-Flavor: Google" 2>/dev/null`

# write it to file
echo $config > $config_file

# start other processes below ...

пример экземпляра

gcloud compute instances create vm-1 \
    --metadata-from-file startup-script=$HOME/example/startup.txt \
    --zone=us-west1-a
0 голосов
/ 28 августа 2018

Вы также можете редактировать профиль пользователя:

nano ~/.bashrc

или даже для всей системы с /etc/profile, /etc/bash.bashrc или /etc/environment

и затем добавьте:

export GOOGLE_APPLICATION_CREDENTIALS=...

Можно также использовать пользовательские метаданные , что довольно специфично GCE.

0 голосов
/ 27 августа 2018
  1. Да, вы можете установить его в вашем сеансе RDP / SSH .
  2. Нет, вы должны установить путь в переменной в соответствии с документацией , или есть примеры кода, которые собирают путь учетной записи службы в переменной для использования учетных данных в ваших приложениях.
...