Справочная информация
У меня есть приложение Node.js, работающее в группе управляемых экземпляров виртуальных машин на GCP Compute Engine.
Новые виртуальные машины генерируются из шаблона со скриптом запуска. Сценарий выполняет обычные функции, устанавливает Node.js, curl, git, клонирует код приложения и т. Д. c.
. Это приложение настроено на автоматическое масштабирование, поэтому мне нужно выполнить настройки pro Грамматически - а именно: host
и port
в файле .env для проекта Node.js.
Как я пытался решить проблему
Единственный способ, которым я могу думать об этом программно при запуске. Сценарий sh - это выполнить команду: gcloud compute instaces list
Это возвращает что-то вроде этого
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
VM-1 us-central1-a n1-standard-1 XX.XXX.X.X XX.XXX.XXX.XXX RUNNING
VM-2 us-central1-a n1-standard-1 XX.XXX.X.X XX.XXX.XXX.XXX RUNNING
VM-3 us-central1-a n1-standard-1 XX.XXX.X.X XX.XXX.XXX.XXX RUNNING
Затем из этого , Я бы хотел извлечь EXTERNAL_IP текущей машины, на которой выполняется скрипт, и каким-то образом записать его в переменную окружения / записать в файл .env для моего проекта.
Только файл .env содержит в себе эту информацию:
{
"config" : {
"host" : "VM_EXTERNAL_IP"
"port" : 3019
}
}
Этот метод, я думаю, потребовал бы какого-то рода регулярных выражений, чтобы получить правильный IP из вывода команд, затем сохранить в переменной Environment, а затем записать в .env.
Это кажется ненужной работой, поскольку я, конечно, не первый человек, который хочет сделать что-то подобное. Есть ли стандартный способ сделать это? Я ни в коем случае не эксперт Node.js, и даже не эксперт GCP. Возможно, на GCP есть механизм, чтобы справиться с этим? API метаданных, которые могут легко захватить IP для использования в коде? Может быть, на стороне Node.js есть лучший способ настройки хоста? Любые рекомендации приветствуются.