大多数配置都支持来自环境的内联变量。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
}
答案1
目前还不能直接实现。检查此 GH 问题. 但您可以使用envsubst
。
答案2
虽然这是不可能的,但请记住,如果文件中缺少许多配置项,Vault 将读取这些配置项的环境变量。
例如,如果你事先不知道客户端应该使用的 API 地址,请将其从配置文件中删除,然后让VAULT_API_ADDR
Vault 通过变量发现它。
envsubst
否则,按照Alex 的建议运行你的“未解决”文件:
< vault-unresolved-config.hcl envsubst > vault-config.hcl
答案3
虽然它不直接支持除内置环境变量之外的变量,但您可以使用 HEREDOC 在执行之前动态填充配置文件。这通常是必要的,即使 Terraform(另一个 Hashicorp 产品)也对变量有广泛的支持,但后端配置详细信息除外。