2016-02-21 105 views
1

我是openshift的新手,我努力修改git push的環境變量,這樣我就不需要rhc env set ENV_VAR=value -a appname了。根據文檔,我可以在其中一個動作鉤子中導出,但每當我這樣做時,環境變量都不會註冊。如何將環境變量添加到git push的openshift

什麼是自動註冊這些變量而不是執行的最佳方式rhc命令或ssh進入機器並導出?

文檔似乎過時,因爲在action_hooks導出的方法行不通了

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

回答

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/

3

我看到你有你的答案已經,但如果其他人來這裏是爲了同一個問題,我想提一下,rhc env set command實際上設置了一個變量持續,所以它「生存」第e代碼推送,構建和設備重啓。


文檔linked in the question說,export可用於構建期間視圖環境變量;它不建議使用鉤子設置環境變量。
變量的列表本身,使用build掛鉤,應該工作得很好。 ,它通常是由鉤文件not being set executable引起的(

如果在build行動掛鉤export似乎不工作(不列出的變量)或語法(在寫這篇的時候爲我工作)文件內的錯誤)。

+0

嗨,謝謝你的建議!答案寫給'user_vars'的建議實際上並不工作:(你有什麼想法如何從其他openshift的env創建另一個env嗎?我需要這樣的$ MY_DB_CONN_STRING = $ OPENSHIFT_DB_HOST +「: 「+ $ OPENSHIFT_DB_PORT +」/「$ OPENSHIFT_DB_DBNAME – Zennichimaro

+0

這應該更好地在應用程序代碼中完成,即使用您列出的OpenShift變量構建連接字符串(使用'rhc env set設置由其他OpenShift變量組成的環境變量'遠程將不可能。「) –

相關問題