Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Environment variables 在Bluemix运行时环境变量中使用字符(如)_Environment Variables_Ibm Cloud_Object Storage - Fatal编程技术网

Environment variables 在Bluemix运行时环境变量中使用字符(如)

Environment variables 在Bluemix运行时环境变量中使用字符(如),environment-variables,ibm-cloud,object-storage,Environment Variables,Ibm Cloud,Object Storage,我有一个在Bluemix上运行的ruby on rails应用程序。在这个应用程序中,我使用了几个服务,其中一个是对象存储 从逻辑上讲,我希望将用于每个环境dev和prod的凭据放在环境变量中,您可以在Bluemix的runtime选项卡中指定这些环境变量 我想在那里输入这样的密码: 23aSeefae,,)ewFe 运行时环境不接受该符号 它说: 我试过双引号,单引号,我试过用反斜杠来逃避符号 任何帮助都将不胜感激。是否有任何方法可以将变量存储在我的应用程序之外的Bluemix环境中 PS

我有一个在Bluemix上运行的ruby on rails应用程序。在这个应用程序中,我使用了几个服务,其中一个是对象存储

从逻辑上讲,我希望将用于每个环境dev和prod的凭据放在环境变量中,您可以在Bluemix的runtime选项卡中指定这些环境变量

我想在那里输入这样的密码:

23aSeefae,,)ewFe
运行时环境不接受该符号

它说:

我试过双引号,单引号,我试过用反斜杠来逃避符号

任何帮助都将不胜感激。是否有任何方法可以将变量存储在我的应用程序之外的Bluemix环境中


PS:密码不是真正的密码。

您必须将对象服务实例绑定到Bluemix中的应用程序,以便自动为您创建VCAP_服务环境变量

以下是应用程序绑定对象存储服务实例的VCAP_SERVICES env变量示例,出于安全原因,我修改了一些数据:

{
    "Object-Storage": [
        {
            "credentials": {
                "auth_url": "https://identity.open.softlayer.com",
                "project": "object_storage_a92583b3_329e_4ed8_8918_xxx",
                "projectId": "7f1f5659d21340dfaa4568dxxxx",
                "region": "dallas",
                "userId": "abcdefghxxxxxxxxxxxxx",
                "username": "admin_3ff9bf1e187e7fa02e28c96232dxxxxxxx",
                "password": "BF_0_)s3#xxxXXbY^",
                "domainId": "79fc08601744486abf930000000000",
                "domainName": "761111",
                "role": "admin"
            },
            "syslog_drain_url": null,
            "label": "Object-Storage",
            "provider": null,
            "plan": "standard",
            "name": "app-object-storage",
            "tags": [
                "storage",
                "ibm_release",
                "ibm_created"
            ]
        }
    ]
}
然后,您可以在ruby代码中将其作为JSON对象读取,例如:

vcap_services = JSON.parse(ENV['VCAP_SERVICES'])
credentials = vcap_services["Object-Storage"][0]["credentials"]
password = credentials["password"]

我现在也得到了Bluemix支持部门的帮助。这是目前为止最简单的方法来实现我的目标:

您可以通过CloudFoundry命令行界面设置环境变量

cf set-env <APP_NAME> <ENV_VAR_NAME> <ENV_VAR_VALUE>

您必须重新启动应用程序才能使用它们。

谢谢Alex,您说得对,我已经连接了我的服务,我也看到了我的VCAP_服务,我也列出了这些服务。但是,我必须单独请求和列出凭据,以便使用例如Fog来实际写入容器,对吗?通过服务凭据选项卡?如果没有:如何访问VCAP_服务中列出的密码?ENV['password']?这是解决我的问题最简单的方法,谢谢!但是,如果需要访问VCAP_服务中尚未存在的环境变量,也可以使用“cf cups”命令创建自己的服务。它代表创建用户提供的服务,可以在这里找到。在此服务中,您可以填写任何类型的凭据,这些凭据随后将通过连接绑定到应用程序。然后,如Alex所解释的,可以使用服务详细信息通过VCAP_服务进行访问。