如何在git push上添加环境变量到openshift

时间:2016-02-21 14:00:27

标签: linux environment-variables openshift

我是openshift的新手,我在git push上努力修改我的环境,所以每次推动我都不需要rhc env set ENV_VAR=value -a appname。根据文档,我可以在其中一个动作挂钩中导出,但每当我这样做时,环境变量都不会注册..

自动注册这些变量的最佳方法是什么,而不是需要将rhc命令或ssh执行到机器并导出?

由于action_hooks中的导出方法不再起作用,文档似乎已经过时了

https://developers.openshift.com/en/managing-environment-variables.html

2 个答案:

答案 0 :(得分:3)

我看到你已经有了答案,但是如果有其他人来这里提出同样的问题,我想提一下rhc env set command实际设置变量持续,所以它“幸存”代码推送,构建和齿轮重启。

文档linked in the question表示在构建期间export可用于查看环境变量;它不建议使用钩子设置环境变量 使用build钩子的变量列表本身应该可以正常工作。 (在撰写本文时为我工作)

如果export操作挂钩中的build似乎不起作用(不列出变量),则通常由挂钩文件not being set executable(或通过语法)引起文件中的错误)。

答案 1 :(得分:1)

是的,操作挂钩方式已经被破坏,即使您通过挂钩导出,也可以看到没有像文档中所述的那样抛出declare -x个语句。

您可以执行的另一种方法是使用操作挂钩写入此目录中的文件:

$HOME/.env/user_vars

例如,如果要设置RAILS_ENV=development,请编写一个用于生成此文件的脚本:

$HOME/.env/user_vars/RAILS_ENV

有了这个内容:

development

花了很多时间来寻找替代方法,但是这个人把它钉了出来,复制它以防链接在将来被破坏:

如果需要在GEAR中设置一些环境变量,可以使用动作挂钩。 启动前操作挂钩将为您提供良好的服务,但如果您需要在齿轮重启后恢复这些变量,则预启动操作挂钩将不起作用。 另一方面,重新启动后操作挂钩将执行其操作,但我还没有设法让环境变量正常工作。执行后,所有应该具有值的环境变量都是空的。

我所做的是修改预启动操作挂钩,将环境变量创建为$HOME/.env/user_vars下的文件

# Actual script
export OPENSHIFT_POSTGRESQL_DB_HOST="xxx.xxx.xxx.xxx"
export OPENSHIFT_POSTGRESQL_DB_PORT="***"
export OPENSHIFT_POSTGRESQL_DB_NAME="***"
export OPENSHIFT_POSTGRESQL_DB_USERNAME="***""

# Added script for post restart variables
echo "xxx.xxx.xxx.xxx" > OPENSHIFT_POSTGRESQL_DB_HOST
echo "***" > OPENSHIFT_POSTGRESQL_DB_PORT
echo "***" > OPENSHIFT_POSTGRESQL_DB_USERNAME
echo "***" > OPENSHIFT_POSTGRESQL_DB_PASSWORD
After this, if you execute gear restart, the environment variables will exist and will be accesible from your application.

参考:

https://guilleml.wordpress.com/2015/02/17/setting-environment-variables-in-openshift/