将YAML文件转换为vault kv put的Properties文件



我有一个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

最新更新