【问题标题】:golang unmarshal yaml from a vault filegolang 从 Vault 文件中解组 yaml
【发布时间】:2021-11-22 11:22:48
【问题描述】:

使用下面的代码,我可以从 Ansible 保险库文件中获取 yaml,结果如下:

---
dbtype: redis
vsad: go0v

尝试解组 YAML 时,我只得到:

map[string]string(nil)

我想要的目标是解压文件,编辑数据,重新保存文件。

如何实现解组以编辑数据?

package main

import (
    "fmt"
    "github.com/sosedoff/ansible-vault-go"
    "gopkg.in/yaml.v2"
)

type Props struct {
    values map[string]string
}
func main() {
    str, err := vault.DecryptFile("/tmp/tmpvlt", `.NunY4hb33zWx!)`)
    if err != nil {
        panic(err)
    }
    props := Props{}
    err2 := yaml.Unmarshal([]byte(str), &props)
    if err2 != nil {
        panic(err2)
    }
    fmt.Println(str)
    fmt.Printf("%#v\n",props.values)

}

【问题讨论】:

    标签: go yaml ansible-vault


    【解决方案1】:

    你也想做

    var props map[string]string
    

    err2 := yaml.Unmarshal([]byte(str), &props.values)
    

    在您当前的代码中,unmarshaler 无法访问私有字段 values,即使您通过将其重命名为 Values 将其公开,它也不会被填充,因为您的 YAML 没有顶级键名为values

    【讨论】:

      猜你喜欢
      • 2017-04-30
      • 1970-01-01
      • 2018-05-29
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      相关资源
      最近更新 更多