有没有办法在我的 jelastic 清单中通过单独的操作获取有关创建环境的信息?
Is there a way to get information about created environment in a separate action in my jelastic manifest?
假设我的 jps 清单中有以下操作:
actions:
installDatabase:
install:
jps: ${baseUrl}/jelastic/postgres/manifest.jps
envName: ${settings.pgEnvName}
displayName: Database cluster
myOtherAction:
- cmd [cp]:
- doSomethingWithTheDatabaseHostname
第一步,我安装我的数据库。它创建了一个单独的 Jelastic 环境。然后,在第二个操作中,作用于当前环境(不是数据库),我想从第一个操作中获取数据库主机名。更重要的是,我想要数据库主节点。我怎样才能做到这一点?我在通常的 Jelastic 或 cloudscripting 文档中没有找到关于该主题的任何内容。
编辑
在操作myOtherAction
中,我想安装另一个需要通过操作installDatabase
安装的数据库的主机名的jps。可能是其他 jps 需要连接到该数据库。我不想手动安装多个 jps 清单。我想自动安装我需要的所有清单。在这里描述的情况下,第一个清单安装数据库环境。我需要获取该数据库的主节点的节点 ID,并将其传递给下一个清单。这可能吗?
对于如何从一个 JPS 使用多个环境,有多种选择,例如,您可以安装另一个 JPS:
actions:
installDatabase:
- install:
jps: ${baseUrl}/jelastic/postgres/manifest.jps
envName: ${settings.pgEnvName}
displayName: Database cluster
- install:
envName: ${settings.pgEnvName}
jps:
type: upddate
name: Configure Database
onInstall:
- cmd [${nodes.sqldb.master.id}]:
- echo ${nodes.sqldb.master.address}
- doSomethingWithTheDatabaseHostname
或者您可以使用 API:
在另一个环境中执行查询
actions:
installDatabase:
- install:
jps: ${baseUrl}/jelastic/postgres/manifest.jps
envName: ${settings.pgEnvName}
displayName: Database cluster]
- script: |
var resp = api.env.control.GetEnvInfo('${settings.pgEnvName}', session);
if (resp.result != 0) return resp;
for (var i = 0, node; node = resp.nodes[i]; i++ ) {
if (node.nodeGroup == "sqldb" && node.ismaster) {
return { result: 0, node: node };
}
}
return { result : "error", message: "node not found" };
- env.control.ExecCmdById:
envName: ${settings.pgEnvName}
nodeId: ${response.node.id}
commandList:
# doSomethingWithTheDatabaseHostname:
- command: hostname
假设我的 jps 清单中有以下操作:
actions:
installDatabase:
install:
jps: ${baseUrl}/jelastic/postgres/manifest.jps
envName: ${settings.pgEnvName}
displayName: Database cluster
myOtherAction:
- cmd [cp]:
- doSomethingWithTheDatabaseHostname
第一步,我安装我的数据库。它创建了一个单独的 Jelastic 环境。然后,在第二个操作中,作用于当前环境(不是数据库),我想从第一个操作中获取数据库主机名。更重要的是,我想要数据库主节点。我怎样才能做到这一点?我在通常的 Jelastic 或 cloudscripting 文档中没有找到关于该主题的任何内容。
编辑
在操作myOtherAction
中,我想安装另一个需要通过操作installDatabase
安装的数据库的主机名的jps。可能是其他 jps 需要连接到该数据库。我不想手动安装多个 jps 清单。我想自动安装我需要的所有清单。在这里描述的情况下,第一个清单安装数据库环境。我需要获取该数据库的主节点的节点 ID,并将其传递给下一个清单。这可能吗?
对于如何从一个 JPS 使用多个环境,有多种选择,例如,您可以安装另一个 JPS:
actions:
installDatabase:
- install:
jps: ${baseUrl}/jelastic/postgres/manifest.jps
envName: ${settings.pgEnvName}
displayName: Database cluster
- install:
envName: ${settings.pgEnvName}
jps:
type: upddate
name: Configure Database
onInstall:
- cmd [${nodes.sqldb.master.id}]:
- echo ${nodes.sqldb.master.address}
- doSomethingWithTheDatabaseHostname
或者您可以使用 API:
在另一个环境中执行查询actions:
installDatabase:
- install:
jps: ${baseUrl}/jelastic/postgres/manifest.jps
envName: ${settings.pgEnvName}
displayName: Database cluster]
- script: |
var resp = api.env.control.GetEnvInfo('${settings.pgEnvName}', session);
if (resp.result != 0) return resp;
for (var i = 0, node; node = resp.nodes[i]; i++ ) {
if (node.nodeGroup == "sqldb" && node.ismaster) {
return { result: 0, node: node };
}
}
return { result : "error", message: "node not found" };
- env.control.ExecCmdById:
envName: ${settings.pgEnvName}
nodeId: ${response.node.id}
commandList:
# doSomethingWithTheDatabaseHostname:
- command: hostname