将 YAML 文件转换为 vault kv put 的属性文件

Convert YAML file to Properties file for vault kv put

我有一个 YAML 文件,我想将它推送到 Vault。

# values.yaml
db:
  username: msql
  pass:  p$$ass

但是,保管库只接受 key/value 对,即秘密引擎 v2。

 vault kv secret/projects/craft/app-a mykey=value

如果我可以将 YAML 文件转换为属性文件,我将自动获得 key/value 对。然后,我可以推送它的 key/value 对 .

我看到问题 Convert YAML file to Application.properties 会回答我的问题。

但是,答案建议了一些工具,但是它不支持yaml列表格式。

另外,问题已关闭,不再接受答案!!

我试过其他方法,但似乎没有任何效果。

如何将 YAML 文件转换为完整密钥 path/value 对..这是一个属性文件的末尾。

因为原问题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,路径和值之间的分隔符是 : ,而我们需要它是 =。所以我们需要在每一行中将 : 替换为 =(仅第一次出现)

虽然不完全是你要求的,但你可以将文本保存为base64,然后在检索时对其进行解码,例如

vault kv put secret/foo data=$(base64 < values.yaml )

然后当你检索它时,base64 解码它,例如

vault kv get -field data secret/foo | base64 -d