我有一个YAML文件,我想将其推送到Vault。
# values.yaml
db:
username: msql
pass: p$$ass
但是,Vault仅接受键/值对,即秘密引擎v2。
vault kv secret/projects/craft/app-a mykey=value
如果我可以将YAML文件转换为属性文件,我将自动获得键/值对。然后,我可以推其键/值对。
我看到问题Convert YAML file to Application.properties将回答我的问题。
但是,答案提示了一些工具,但是它不支持yaml列表格式。
此外,问题已关闭,不再接受答案! ?
我尝试了其他方法,但似乎没有任何作用。
如何将YAML文件转换为完整的键路径/值对..该文件最后是属性文件。
答案 0 :(得分:1)
虽然不是您想要的,但是您可以将文本另存为base64,然后在检索时将其解码,例如
vault kv put secret/foo data=$(base64 < values.yaml )
,然后在检索它时,例如对它进行base64解码
vault kv get -field data secret/foo | base64 -d
答案 1 :(得分:0)
由于原始问题Convert YAML file to Application.properties已结束,因此我将在此处回答。
实际上,yq CLI在这里必须足够:
yq r values.yaml --printMode pv "**" | sed 's/: /=/' > values.properties
说明:
yq r
:读取Yaml文件--printMode pv
:pv表示路径值**
:表示所有关键路径。sed 's/: /=/'
:如果在不使用sed的情况下运行它,则路径和值之间的分隔符为:
,而我们需要将其设为=
。因此,我们需要在每一行中将:
替换为=
(仅在第一行出现)