【问题标题】:Convert YAML file to Properties file for vault kv put将 YAML 文件转换为 Vault kv put 的属性文件
【发布时间】:2020-11-15 18:17:54
【问题描述】:

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

【问题讨论】:

    标签: yaml properties-file hashicorp-vault


    【解决方案1】:

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

    【讨论】:

    • 它不再适用于 yq 版本 4
    • 新语法为:yq e C:\Path\To\my.yaml -P -o props -M
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 顺便说一句,我最终把整个内容都放在了没有编码的地方:vault kv put secret/foo data=$(cat values.yaml )
    猜你喜欢
    • 2020-05-27
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多