大多数配置支持来自环境的内联变量。支持 Vault 配置是否支持环境变量?就像是:
ui = true
listener "tcp" {
tls_disable = 1
address = "[::]:8200"
cluster_address = "[::]:8201"
}
storage "postgresql" {
connection_url = $PG_URL // where PG_URL is an environment variable
}
目前还不能直接实现。检查这个 GH 问题。但是你可以使用
envsubst
.尽管这是不可能的,但请记住,如果文件中缺少许多配置项,Vault 将读取环境变量。
例如,如果您事先不知道客户端应使用的 API 地址,请将其从配置文件中删除,并让Vault 通过
VAULT_API_ADDR
变量发现它。否则,按照 Alex 的建议运行您的“未解析”文件,
envsubst
如下所示:虽然它不直接支持除了内置环境变量之外的变量,但您可以使用 HEREDOC 在执行之前动态填充配置文件。这通常是必要的,即使 Terraform(另一个 Hashicorp 产品)除了后端配置详细信息外,还广泛支持变量。