Мы разработали пару плагинов провайдера для terraform, причем без указания версии. Затем для нашего собственного контроля мы начали использовать ldflags во время сборки:
go build -ldflags '-X \"main.VersionString=#{VERSION} (#{REVISION})\"' -o '#{WS}/#{PROJECT_NAME}' main.go"
и в коде:
package main
import(
"github.com/hashicorp/terraform/plugin"
...
)
var VersionString = "unversioned"
func main(){
if len(os.Args) == 2 && os.Args[1] == "--version" {
fmt.Printf("Version %s\n", VersionString)
os.Exit(0)
}
plugin.Serve(&plugin.ServeOpts{
ProviderFunc: myprovider.Provider})
}
Проблема в том, что terraform не знает версию, поэтому мы не можем заморозить версию для наших плагинов.
Как правильно создавать версии пользовательских плагинов для terraform?