golang 从保险库文件中解组 yaml
golang unmarshal yaml from a vault file
使用以下代码,我可以从 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)
}
你想做任何一个
var props map[string]string
或
err2 := yaml.Unmarshal([]byte(str), &props.values)
在您当前的代码中,解组器无法访问私有字段 values
,即使您通过将其重命名为 Values
使其成为 public,它也不会被填充,因为您的 YAML 没有名为 values
.
的顶级密钥
使用以下代码,我可以从 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)
}
你想做任何一个
var props map[string]string
或
err2 := yaml.Unmarshal([]byte(str), &props.values)
在您当前的代码中,解组器无法访问私有字段 values
,即使您通过将其重命名为 Values
使其成为 public,它也不会被填充,因为您的 YAML 没有名为 values
.