将YAML文件转换为Vault kv put

时间:2020-07-26 08:46:01

标签: yaml properties-file hashicorp-vault

我有一个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文件转换为完整的键路径/值对..该文件最后是属性文件。

2 个答案:

答案 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的情况下运行它,则路径和值之间的分隔符为: ,而我们需要将其设为=。因此,我们需要在每一行中将: 替换为=(仅在第一行出现)