【发布时间】:2017-03-19 13:51:56
【问题描述】:
我有一个 Dev Ops Services Pipeline,用于使用 CloudFoundry 和 MongoDB 自动设置 MeteorJS 应用程序(实际上只是一个 NodeJS 应用程序)。
我在 Dev Opts 服务中有以下部署脚本:
```
#!/bin/bash
cf create-service compose-for-mongodb Standard mongodbbuzzy01
cf push "${CF_APP}" --no-start
mongourl=$(cf env ${CF_APP} | egrep -o 'mongodb://.*"' | rev | cut -c 2- | rev); cf set-env ${CF_APP} MONGO_URL $mongourl
cf restage "${CF_APP}"
```
这允许我从 VCAP_SERVICES 获取 mongourl,然后将其设置为 MONGO_URL 环境变量(在 DevOps shell 命令中)
我需要为 Meteor 也需要的 ROOT_URL 做同样的事情。距离上一个 sed/awk/grep 脚本已经过去了大约 20 年,我需要从 cf env 文本(包含一些 JSON 的文本)中提取 Bluemix 应用程序的 URI。
cf env <appname> 的结果是文本和 JSON 对象的混合(实际上只是文本)
Getting env variables for app buzzy7build in org Buzzy / space dev as adam.ginsburg@buzzy.buzz...
OK
System-Provided:
{
"VCAP_SERVICES": {
"compose-for-mongodb": [
{
"credentials": {
.... just curring out details
}
}
}
{
"VCAP_APPLICATION": {
"application_id": "<some app id>",
"application_name": "<app name>",
"application_uris": [
"<the uri I am trying to get>"
],
...
所以我需要一些帮助来使用 Bluemix shellscrip 提取 <the uri I am trying to get>(确定这是否是 NodeJS,这很容易)
在 Bluemix shell 中没有 jq(我知道)所以只有 sed,awk,grep 等
任何帮助表示赞赏。
谢谢
【问题讨论】:
-
您能否提供完整的
JSON,您的实际输出的示例?然后很容易测试命令。 -
@Inianthanks 请看这里gist.github.com/adamgins/6e5a842d21306a53d93ef8b7fa634775
-
不清楚你在第36行
"application_uris"或第48行"uris": [之后是哪一个 -
我认为它们都是一样的,所以要么
-
@Inian 非常感谢,非常感谢
标签: bash shell awk sed ibm-cloud