您可以通过使用envconsul或Teller来实现这一点。
引用 envconsul 的文档,“Envconsul 提供了一种方便的方法来启动子进程,其中环境变量从 HashiCorp Consul 和 Vault 填充。”
另一方面,除了 Consul,Teller 还支持从其他提供者读取数据。
下面是两个使用 envconsul 和 Teller 从public_stable/
和读取密钥的示例public_temp/
,并将它们作为环境变量提供给已启动的子进程。
首先,在每个路径下创建一个测试密钥。
$ consul kv put public_stable/STABLE_URL https://example.com/stable_website
Success! Data written to: public_stable/STABLE_URL
$ consul kv put public_temp/TEMP_RELOAD_INTERVAL 600
Success! Data written to: public_temp/TEMP_RELOAD_INTERVAL
envconsul
下载 envconsul。将CONSUL_HTTP_ADDR
环境变量设置为您的 Consul 客户端 API 的地址。如果在环境中启用了 ACL,您还需要配置CONSUL_HTTP_TOKEN
环境变量。
export CONSUL_HTTP_ADDR=http://localhost:8500
export CONSUL_HTTP_TOKEN=<token>
运行以下命令,指示 envconsul 查询 public_temp 和 public_stable 下的键,并将它们用作环境变量。envconsul 将运行该env
命令,以便我们可以看到提供给子进程的变量集。
$ envconsul -pristine -prefix public_temp -prefix public_stable -once env
TEMP_RELOAD_INTERVAL=600
STABLE_URL=https://example.com/stable_website
出纳员
安装 Teller 并.teller.yml
使用以下内容在项目目录中创建。
.teller.yml
---
opts:
environment: public
# Providers
providers:
# Configure via environment:
# CONSUL_HTTP_ADDR
# CONSUL_HTTP_TOKEN, if ACLs are enabled
consul:
env_sync:
path: "{{environment}}_stable/"
consul2:
kind: consul
env_sync:
path: "{{environment}}_temp/"
用于teller env
以文件格式输出检索到的键值对,.env
以验证数据是否正确合并到一组环境变量中。
$ teller env
TEMP_RELOAD_INTERVAL=600
STABLE_URL=https://example.com/stable_website
然后,您可以在 Teller 下使用teller run
. 此命令语法的详细信息记录在https://github.com/SpectralOps/teller#running-running-subprocesses中。