未检测到 Vault Token Helper?
Vault Token Helper not being detected?
问题:
我在 vault:0.10.2
docker 图像中的以下位置有三个文件:
/home/myuser/token_helper
:Go 中的令牌助手二进制文件,根据 this documentation
实现令牌助手接口
/home/myuser/vault_start
:运行s os.exec("vault", "operator", "init")
和 os.exec("vault", "server", "-config=myconfig.hcl")
的 Go 脚本
/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
到目前为止调试完成:
这个错误似乎不正确。 which getent
returns /usr/bin/getent
,图像$PATH
包含它,证明两者都存在。此外,配置路径不是 ""
,而是设置为 /home/myuser/.vault
,但 Vault 显然将其检测为空。
我已将错误输出追踪到 Vault 的 command
目录中的 this file:。根据该代码块,它仅在未设置 $HOME
时出错,但我已确认 $HOME
已在 shell 中设置。
此外,为了根据 this document 实施令牌助手,我已经指定了 Vault 要求的所有内容,但它似乎没有检测到 运行 的配置文件它。这似乎是 Vault 的错误,还是我遗漏了什么?
想通了,是因为os.exec("vault", "operator", "init")
行没有继承host的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`)}
问题:
我在 vault:0.10.2
docker 图像中的以下位置有三个文件:
/home/myuser/token_helper
:Go 中的令牌助手二进制文件,根据 this documentation
/home/myuser/vault_start
:运行s os.exec("vault", "operator", "init")
和 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
到目前为止调试完成:
这个错误似乎不正确。 which getent
returns /usr/bin/getent
,图像$PATH
包含它,证明两者都存在。此外,配置路径不是 ""
,而是设置为 /home/myuser/.vault
,但 Vault 显然将其检测为空。
我已将错误输出追踪到 Vault 的 command
目录中的 this file:。根据该代码块,它仅在未设置 $HOME
时出错,但我已确认 $HOME
已在 shell 中设置。
此外,为了根据 this document 实施令牌助手,我已经指定了 Vault 要求的所有内容,但它似乎没有检测到 运行 的配置文件它。这似乎是 Vault 的错误,还是我遗漏了什么?
想通了,是因为os.exec("vault", "operator", "init")
行没有继承host的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`)}