[英]Best practices for managing multiple environment variables in prodution
盡管我不熟悉 DevOps 最佳實踐,但我正在嘗試提出一種可靠且有效的方法來管理生產中的多個變量。 以下代表我目前的方法:
/
|ENV_VAR.sh
|--/api1
|--/staging.api1
|--/api2
|--/staging.api2
在哪里:
ENV_VAR.sh
### API 1 variables ###
export API1_VAR_1=foo
export API1_VAR_2=foo2
export API1_STAG_VAR_1=foo_stag
export API1_VAR_2=foo2_stag2
### API 2 variables ###
export API2_VAR_1=foo
export API2_VAR_2=foo2
export API2_STAG_VAR_1=foo_stag
export API2_VAR_2=foo2_stag2
API 1 和 2 是兩個基於 nodejs 的應用程序,使用反向代理配置在同一服務器上運行。 如果服務器沒有任何問題(例如意外關閉),我只需要不時通過SOURCE ENV_VAR.SH
(重新)設置變量,以確保定義了新變量。
在繼續這種方法之前,我想知道它是否完全正確,或者它是否有很大的缺陷。 如果這種方法沒問題,每當部署任何應用程序的新版本時,如何自動(重新)從package.json
環境變量? (只是為了保證變量仍然被定義)
提前致謝。
我喜歡將 Loren West 的配置package 用於這些配置參數。 我碰巧喜歡使用屬性package 來擴展它:這樣我就不必將參數設置為有效的、無注釋的 JSON 格式。 JSON5也有助於解決可讀性問題,但我沒有嘗試過。
為什么我喜歡這個?
它提供了一種處理開發/測試/登台/生產環境的結構化方式。 它關閉了ENV
環境變量,它當然具有development
和production
等值。
所有屬性文件 go 到一個目錄中,通常是./config
。 你的生產克魯可以告訴他們在看什么。 default.properties
、 development.properties
和production.properties
是典型文件的名稱。
大多數配置參數不必保密,因此可以將它們提交到您的存儲庫。
秘密(密碼、連接字符串、API 密鑰等)可以存儲在由部署系統放入./config
的local.properties
文件中。 (在.gitignore
文件中提及local.properties
。)
秘密也可以從環境變量中加載,在名為./config/custom_environment_variables.json
的文件中命名。
它與pm2
很好地配合使用。
這真的很容易配置。
您的文件:
default.properties (used when not overridden by another file)
[API1]
VAR_1 = foo
VAR_2 = foo2
[API2]
VAR_1 = foo
VAR_2 = foo_for_api2
staging.properties
[API1]
VAR_1 = foo_stag
VAR_2 = foo2_stag2
[API2]
VAR_1=foo_stag
VAR_2=foo2_stag2
custom_environment_variables.json
{
"API1" : {
"password": "API1_PASS"
},
"API2" : {
"password": "API2_PASS"
}
}
你的 nodejs 程序:
const config = require( 'config' )
require( 'properties' )
const appConfig = config.get( 'API1' )
const var1 = appConfig.VAR_1
const password = appConfig.password
然后,您使用API1_PASS=yaddablah nodejs program.js
運行您的程序,並獲得所有配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.