Как я могу действовать на последнем созданном узле в моем установочном манифесте jelasti c? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть следующий манифест jps:

jpsVersion: 1.3
jpsType: update
application:
  id: test
  name: Test
  version: 0.0

  onInstall:
  - addNodes:
    - nodeType: docker
      count: 1
      fixedCloudlets: 1
      cloudlets: 16
      dockerName: gitlab/gitlab-runner

  onAfterAddNode:
  - installDocker

  actions:
    installDocker:
    - cmd:
      - myDockerInstallScript.sh

Моя проблема в том, что действия onAfterAddNode не вызываются, даже если узел был успешно добавлен. Что я делаю неправильно? Как я могу гарантировать, что команды будут выполняться только на добавленном узле?

РЕДАКТИРОВАТЬ

Мой пример использования следующий: я создал некоторое время среду go, которую я хотел бы нравится добавлять новые узлы в. Поэтому мне нужно обновить эту среду с добавлением новых узлов и с некоторыми шагами по установке на этих новых узлах.

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Если вам нужно выполнить действие только во вновь созданном узле, вы можете сделать это следующим образом:

jpsVersion: 1.3
jpsType: update
application:
  id: test
  name: Test
  version: 0.0
  onInstall:
  - addNodes:
      nodeType: docker
      count: 1
      nodeGroup: runner
      fixedCloudlets: 1
      cloudlets: 16
      dockerName: gitlab/gitlab-runner
  - installDocker: ${nodes.runner.last.id}
  actions:
    installDocker:
    - cmd [${this}]:
      - myDockerInstallScript.sh

Также, спасибо за комментарий к документации, мы обновили его: https://docs.cloudscripting.com/creating-manifest/actions/#addnodes

0 голосов
/ 28 апреля 2020

Выполнение других событий в среде происходит только после успешного завершения события onInstall. Событие onAfterAddNode будет выполняться при следующем добавлении узла. Здесь вы можете увидеть последовательность событий. Если вам просто нужно вызвать действие во время установки, то вам нужно сделать это в onInstall:

Пример:

jpsVersion: 1.3
jpsType: update
application:
  id: test
  name: Test
  version: 0.0
  onInstall:
  - addNodes:
    - nodeType: docker
      count: 1
      fixedCloudlets: 1
      cloudlets: 16
      dockerName: gitlab/gitlab-runner
  - installDocker
  actions:
    installDocker:
    - cmd:
      - myDockerInstallScript.sh

Если необходимо, чтобы определенное действие также выполнялось каждый раз узел добавляется в топологию среды, тогда вы можете сделать это следующим образом:

jpsVersion: 1.3
jpsType: update
application:
  id: test
  name: Test
  version: 0.0
  onInstall:
  - addNodes:
    - nodeType: docker
      count: 1
      nodeGroup: runner
      fixedCloudlets: 1
      cloudlets: 16
      dockerName: gitlab/gitlab-runner
  - installDocker
 onAfterAddNode [runner]:
  - installDocker
  actions:
    installDocker:
    - cmd [runner]:
      - myDockerInstallScript.sh

Если вы хотите, чтобы заданное действие c было выполнено после масштабирования всего слоя, тогда вы можете сделать это так:

jpsVersion: 1.3
jpsType: update
application:
  id: test
  name: Test
  version: 0.0
  onInstall:
  - addNodes:
    - nodeType: docker
      count: 1
      nodeGroup: runner
      fixedCloudlets: 1
      cloudlets: 16
      dockerName: gitlab/gitlab-runner
  - installDocker
 onAfterScaleOut [runner]:
  forEach(event.response.nodes):
    installDocker: ${@i.id} 
  actions:
    installDocker:
    - cmd [${this}]:
      - myDockerInstallScript.sh
...