当前,API仅支持/v1
路径,这很好。我的问题是,在开发配置中,我有一个docker-compose.yml
文件,该文件使用以下简单配置进行设置:
version: '3.7'
services:
my-vault:
image: library/vault:1.4.0
container_name: my-vault
cap_add:
- IPC_LOCK
environment:
VAULT_DEV_ROOT_TOKEN_ID: devroot
VAULT_DEV_LISTEN_ADDRESS: 0.0.0.0:8200
ports:
- 8200:8200
当我通过UI手动创建我的秘密引擎(并将其显式设置为V1)时,我可以很好地使用我的代码。我只是设置数据,而Go库就像一个超级按钮:
client, err := vault.NewClient(vault.DefaultConfig())
if err != nil {
panic(err)
}
myMapValues := map[string]interface{}{}
myMapValues["mykey"] = "someSecretValue"
_, err := client.Logical().Write("myV1SecretPath/hello", myMapValues)
if err != nil {
panic(err)
}
在Docker容器中,我看到:
/ # ps aux | grep vault
6 vault 0:07 vault server -config=/vault/config -dev-root-token-id=devroot -dev-listen-address=0.0.0.0:8200 -dev
我在那里看到配置位置设置为目录/vault/config
,默认情况下,目录不包含任何内容。阅读Server Configuration documentation时,我看不到为秘密指定默认配置的方法。
我想添加一个模拟此命令的配置文件:
vault secrets enable -address=http://127.0.0.1:8200 -version=1 -path=myV1SecretPath kv
是否可以通过配置选项来做到这一点?或者我只需要构建自己的Docker映像即可完成此任务?
答案 0 :(得分:1)
这不能用配置文件来完成-在正在运行的服务器上启用引擎,而配置文件仅配置服务器的基本行为-监听接口,数据存储位置等。启动。
同时,服务器由于处于密封状态而无法在启动时访问存储(在您的情况下,它以开发模式运行,因此实际上将以未密封的方式启动,但这不是Vault设计的一般情况)。
您将需要自己将此调用添加到自定义的Docker映像中(应该不太困难),或者作为包装docker-compose调用的脚本的一部分。