Terraform插件开发,在哪里指定版本?go应用程序版本控制的最佳实践?
我们为terraform开发了两个提供程序插件,但没有指定版本。然后,对于我们自己的控制,我们开始在构建时使用ldflags进行版本设置:Terraform插件开发,在哪里指定版本?go应用程序版本控制的最佳实践?,terraform,Terraform,我们为terraform开发了两个提供程序插件,但没有指定版本。然后,对于我们自己的控制,我们开始在构建时使用ldflags进行版本设置: go build -ldflags '-X \"main.VersionString=#{VERSION} (#{REVISION})\"' -o '#{WS}/#{PROJECT_NAME}' main.go" 在守则中: package main import( "github.com/hashicorp/terraform/plugin"
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定制插件的正确版本是什么 Terraform插件通常不知道二进制文件本身中的版本号,而是将其声明为文件名的一部分 例如,名为“foo”的q provider插件可能有一个文件名
terraform-provider-foo_v1.2.0
,然后告诉terraform Core在找到该插件时将其视为1.2.0版