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