我创建了4KV文件夹(我指的是目录。每对包含10个键-值对),用于我的测试jenkins管道。以便我可以为我应用程序创建.env文件。它们是public_stable、private_stable、public_temp、private_temp。我想将public_stable和public_temp合并到一个新的KV文件夹中,并命名为public_my_testing_env_name。私有值也是如此。我想合并,因为我的同事将更新运行环境的值。以便他们可以使用testing_env_name在数以千计.env文件中轻松地找到他们的.env文件。
1-)我可以在不读取所有值的情况下使用consul http端点执行此操作吗?我不想通过编程来做这件事。
2-)我用consul-template读取值。我能用consul-template创建那个文件夹吗?
3-)这是不合法的我知道:|。你认为这种方式好吗?
发布于 2021-06-08 21:57:28
引用Envconsul的文档,"Envconsul提供了一种便捷的方法,可以使用从HashiCorp Consul和Vault填充的环境变量来启动子进程。“
另一方面,Teller除了支持Consul之外,还支持从其他提供者读取数据。
下面是使用envconsul和the从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。将CONSUL_HTTP_ADDR环境变量设置为您的领事客户端应用编程接口的地址。如果在环境中启用了CONSUL_HTTP_TOKEN,您还需要配置ACL环境变量。
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 run在柜员下运行应用程序。此命令语法的详细信息记录在https://github.com/SpectralOps/teller#running-running-subprocesses中。
https://stackoverflow.com/questions/67370571
复制相似问题