Развертывание виртуальной машины GCP: как динамически обновлять свойства конфигурации yaml при создании виртуальной машины - PullRequest
0 голосов
/ 20 ноября 2018

У нас есть приложение nodejs, которое создает виртуальную машину на GCP, используя файл конфигурации (.yaml) и шаблоны.Теперь я хочу обновить несколько свойств в шаблоне yaml / на основе пользовательского ввода из пользовательского интерфейса при создании виртуальной машины.Как мы можем динамически обновлять свойства конфигурации?Заранее спасибо за любые предложения.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Похоже, у вас есть два варианта:

1) Путь шаблона jinja

Вместо файла конфигурации вы определяете шаблон jinja: resources:

# my-template.jinja
resources:
- name: my-resource
  type: some-type
  properties:
    prop1: {{ properties['foo'] }}
    prop2: {{ properties['bar'] }}

Затем вы можете вызвать его следующим образом, и переменные foo и bar будут сопоставлены с предоставленными свойствами:

gcloud deployment-manager deployments create <my-deployment> \
  --template my-template.jinja \
  --properties foo:user-custom-value,bar:another-value

2) Путь шаблона old-schoold

Мы заменяемпользовательские значения в самом тексте, вместо использования движка рендеринга (как у jinja2)

# my-template.yaml
resources:
- name: my-resource
  type: some-type
  properties:
    prop1: REPLACE-PROP-1
    prop2: REPLACE-PROP-2

Замените текст, как вы можете, вы можете использовать sed, если вы запускаете скрипт оболочки, илииз самого узла / javascript

const replaces = [
  {name: 'REPLACE-PROP-1', value: 'user-custom-value'},
  {name: 'REPLACE-PROP-2', value: 'another-custom-value'},
];
const templateYaml = fs.readFileSync('my-template.yaml','utf-8');
const customYaml = replaces
  .map(r => templateYaml.replace(RegExp(r.name,'g'), r.value);

Или используйте sed

sed -ie 's/REPLACE-PROP-1/user-custom-value/g' my-template.yaml
sed -ie 's/REPLACE-PROP-2/another-cst-value/g' my-template.yaml

И, наконец, разверните config :

gcloud deployment-manager deployments create <my-deployment> \
  --config my-template.yaml
0 голосов
/ 20 ноября 2018

Диспетчер развертывания GCP не имеет возможности сделать это динамически.Вам нужно добавить дополнительный слой (например, щелчок для развертывания на торговой площадке), который позволяет пользователям выбирать переменные перед применением файла конфигурации.У DM нет чего-то такого.

...