【问题标题】:How to pass system environment variables to app.yaml?如何将系统环境变量传递给 app.yaml?
【发布时间】:2019-06-05 23:22:39
【问题描述】:

有可能吗?这是我的app.yaml

runtime: nodejs8
env_variables:
  NODE_ENV: production
  PORT: 8080
  API_KEY: ${API_KEY}

${API_KEY} 就像一个占位符。

当我运行API_KEY=xdfj212c gcloud app deploy app.yaml 命令时,我想将API_KEY=xdfj212c 传递给app.yaml 并将占位符替换为 xdfj212c.

预期结果:

runtime: nodejs8
env_variables:
  NODE_ENV: production
  PORT: 8080
  API_KEY: xdfj212c

或者,在我运行之后

  1. export API_KEY=xdfj212c

  2. gcloud app deploy

我想要同样的行为。

这对谷歌应用引擎部署工作流程有意义吗?

【问题讨论】:

标签: google-app-engine google-cloud-platform


【解决方案1】:

app.yaml 你可以include 另一个 YAML 配置

includes:
- extra_env_vars.yaml

您可以在插入 environment variables 时即时创建

# Unix-like OS
export DB_PASSWORD=your_password
export DB_HOST=your_host
echo -e "env_variables:\n    DB_PASSWORD: $DB_PASSWORD\n    DB_HOST: $DB_HOST" > extra_env_vars.yaml

# Windows
set DB_PASSWORD=your_password
set DB_HOST=your_host
(echo env_variables: & echo.    DB_PASSWORD: %DB_PASSWORD% & echo.    DB_HOST: %DB_HOST%) > extra_env_vars.yaml

生成的extra_env_vars.yaml 如下所示:

env_variables: 
    DB_PASSWORD: your_password 
    DB_HOST: your_host

最后,在你的版本控制系统中忽略extra_env_vars.yaml

【讨论】:

    【解决方案2】:

    你总是可以使用sed:

    $ sed -i 's/${API_KEY}/xdfj212c/g' app.yaml && gcloud app deploy
    

    “坏”的事情是这会将密钥存储回来,但您始终可以附加一个新的sed 命令以用占位符再次替换密钥,或者使用您的 VCS 机制来重置更改文件。

    另一种选择是将您的 app.yaml 文件保存为 app_template.yaml 之类的文件,然后为您的部署执行此操作:

    $ sed 's/${API_KEY}/xdfj212c/g' app_template.yaml | tee app.yaml; gcloud app deploy
    

    这将在新文件app.yaml 中进行替换,然后进行部署。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 2021-10-18
      • 2013-12-29
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多