2017-01-20 21 views
0

У меня есть рубин на приложении rails на Bluemix. В этом приложении я использую несколько сервисов, одним из которых является хранилище объектов.Использование таких символов, как) в переменных среды выполнения Bluemix

Логически, я хочу поместить учетные данные, которые я использую для каждой среды (dev и prod) в переменных среды, которые вы можете указать на вкладке времени выполнения в Bluemix.

Я хочу поставить пароль, как это там:

23aSeefae,,)ewFe 

Среда выполнения не принимает знак).

Он говорит: enter image description here

Я попытался двойные кавычки, одинарные кавычки, и я пытался бежать знак) с обратной косой черты.

Любая помощь будет оценена по достоинству. Есть ли способ сохранить мои переменные за пределами моего приложения и в среде Bluemix?

PS: пароль - это не настоящий пароль.

ответ

0

Теперь я получил помощь от поддержки Bluemix. Это, безусловно, самый простой способ сделать то, что я хочу:

Вы можете установить переменные среды через интерфейс командной строки Cloud Foundry.

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

Прежде чем вы сможете их использовать, вам придется перезагрузить приложение.

1

Вам необходимо связать экземпляр службы объекта с вашим приложением в Bluemix, чтобы переменная окружения VCAP_SERVICES была автоматически создана для вас.

Вот пример переменного окр VCAP_SERVICES для приложения обязательного экземпляра объекта службы хранения (я модифицировал некоторые данные по соображениям безопасности):

{ 
    "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" 
      ] 
     } 
    ] 
} 

Вы можете прочитать как объект JSON в вашем рубине код, например:

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

Спасибо, Алекс, вы правы, я уже подключил мое обслуживание, и я также вижу свои VCAP_SERVICES, у меня также есть это в списке. Тем не менее, я должен запросить и перечислить учетные данные отдельно для фактического написания контейнеров, например, с помощью Fog, верно? Через вкладку учетных данных службы? Если нет: как мне получить доступ к паролю, указанному в VCAP_SERVICES? ENV [ 'пароль']? – DirkBlaauw

+0

Я добавил образец кода рубина. –

+0

Это был самый простой способ решить мою проблему, спасибо! Однако, если вам нужно получить доступ к переменной среды, которая еще не существует в VCAP_SERVICES, вы также можете создать свой собственный сервис с помощью команды cf cups. Это означает «создать предоставленную пользователем услугу» и можно найти здесь https://docs.cloudfoundry.org/devguide/services/user-provided.html. В этой службе вы можете заполнить все типы учетных данных, которые впоследствии будут привязаны к приложению с соединением. Затем данные службы могут использоваться для доступа через VCAP_SERVICES, как объяснил Алекс. – DirkBlaauw