del*_*los 5 go devops alpine-linux hashicorp-vault
问题:
我的 docker 镜像中有三个文件,vault:0.10.2位于以下位置:
/home/myuser/token_helper:Go 中的令牌助手二进制文件,根据本文档实现令牌助手接口
/home/myuser/vault_startos.exec("vault", "operator", "init"):运行的Go 脚本os.exec("vault", "server", "-config=myconfig.hcl")
/home/myuser/.vault:令牌帮助程序配置文件指定令牌帮助程序二进制位置,我已导出VAULT_CONFIG_PATH以指向此路径。文件内容如下token_helper = "/home/myuser/token_helper":
我看到的问题是在运行vault_start脚本时出现以下错误:
failed to get token helper: error expanding config path "": exec: "getent": executable file not found in $PATH
Run Code Online (Sandbox Code Playgroud)
到目前为止已完成的调试:
这个错误似乎不正确。which getent返回/usr/bin/getent,并且图像$PATH包含它,证明两者都存在。另外,配置路径不是"",它被设置为/home/myuser/.vault但 Vault 显然将其检测为空。
我已将该错误输出跟踪到Vault 目录中的此文件command: 。$HOME根据该代码块,只有在未设置时才会出错,但我已经确认已$HOME在 shell 中设置了该值。
此外,我已经指定了 Vault 所要求的所有内容,以便根据本文档实现令牌助手,但它似乎没有检测到运行它的配置文件。这似乎是 Vault 的错误,还是我遗漏了什么?
弄清楚了,这是因为该os.exec("vault", "operator", "init")行没有VAULT_CONFIG_PATH从主机继承变量设置,所以它是空的。
下面展示了如何os.Exec在运行期间提供环境变量:
vaultInitCmd := exec.Command("vault", "operator", "init")
vaultInitCmd.Env = []string{
fmt.Sprintf(`VAULT_ADDR=%s`, addr),
fmt.Sprintf(`VAULT_CONFIG_PATH=%s`, `/home/myuser/.vault`)}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2979 次 |
| 最近记录: |