Golang如何打包配置文件

  介绍

这篇文章主要介绍了Golang如何打包配置文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

背景

最近在写一个涉及到管理阿里云ECS的CLI工具,这里当然就要考虑阿里云资源使用的安全性了,要求阿里云账号的AccessKeyId和AccessKeySecret不能下发给CLI工具的使用者。

 Golang如何打包配置文件

所以这里选择将一份包含AccessKeyId和AccessKeySecret的配置文件打包进了CLI工具中,CLI工具的使用者默认将使用已经打包了的配置文件,当然也可以通过指定配置文件或传递参数的方式使用新的配置信息。

实现

工具

这里将介绍Golang的一个可以把任意文件转换成去代码的库go-bindata,可以用于嵌入二进制文件到去程序中,同时,也支持在转换成原始的字节切片前使用gzip进行压缩文件数据。
关于该工具的具体介绍请跳转至https://github.com/go-bindata/go-bindata

打包

使用go-bindata工具将包含敏感信息的配置文件转换成去的源代码,下面是项目Makefile的部分内容,工具名称就叫mycli吧。

NAME =mycli   时间=CONFIG 配置/config.yaml      .PHONY:构建      构建:   ,,,cp 美元(配置),config.yaml   ,,,mkdir  -p  cmd/mycli/资产   ,,,go-bindata  -pkg  asset  -o  cmd/mycli/资产/asset.go  \   ,,,,,,,脚本/璡   ,,,,,,config.yaml   ,,,,   ,,,CGO_ENABLED=0,美好=linux  GOARCH=amd64  go  build  -o  bin/linux/mycli  cmd/mycli/* .go   ,,,CGO_ENABLED=0,美好=darwin  GOARCH=amd64  go  build  -o 达尔文/bin/mycli  cmd/mycli/* .go   ,,,,   ,,,chmod  + x /bin/linux/mycli 。/bin/达尔文/mycli   ,,,rm  -f  config.yaml  mycli   ,,,ln  -s  bin/linux/mycli  mycli

其中将文件转换成去源代码的部分如下:

go-bindata  -pkg  asset  -o  cmd/mycli/资产/asset.go  \   ,,,脚本/璡   ,,配置。yaml

关于go-bindata命令行工具的选项说明:

<李>

包裹指定包名称,调用的写法将变成asset.Asset (“config.yaml")

<李>

- o指定生成的去源代码存放的位置

生成的资产。去代码如下:

//,Code  generated  by  go-bindata。//,来源://脚本/create.sh//脚本/子/delete.sh//config.yaml//,DO  NOT 编辑!      package 资产      func  bindataRead (data []字节,name 字符串),([]字节,,错误),{   ,,,…   }      type  asset  struct  {   bytes []字节   ,info  os.FileInfo   }      type  bindataFileInfo  struct  {   ,name ,字符串   ,size , int64   ,mode , os.FileMode   modTime  time.Time   }      func  (fi  bindataFileInfo),名称(),string  {   return  fi.name   }   func  (fi  bindataFileInfo),大小(),int64  {   return  fi.size   }   func  (fi  bindataFileInfo),模式(),os.FileMode  {   return  fi.mode   }   func  (fi  bindataFileInfo), ModTime (), time.Time  {   return  fi.modTime   }   func  (fi  bindataFileInfo), IsDir (), bool  {   return 假   }   func  (fi  bindataFileInfo),系统(),界面{},{   return  nil   }      …

调用

使用资产方法进行加载打包好的配置文件:

const  preloadConfigFile =,“config.yaml"      type  Config  struct  {   ,,,…   }      func  PreloadConfig(),(*配置,,错误),{   ,,,,err  b:=, asset.Asset (preloadConfigFile)   ,,,if  err  !=, nil  {   ,,,,,,,return  nil,, fmt.Errorf (“failed 用read 配置:,% v",,呃)   ,,,}   ,,,var  config  *配置   ,,,err =, yaml.Unmarshal (b,和配置)   ,,,return 配置,犯错   }

感谢你能够认真阅读完这篇文章,希望小编分享的“Golang如何打包配置文件”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

Golang如何打包配置文件