Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terraform插件开发,在哪里指定版本?go应用程序版本控制的最佳实践?_Terraform - Fatal编程技术网

Terraform插件开发,在哪里指定版本?go应用程序版本控制的最佳实践?

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"

我们为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定制插件的正确版本是什么

Terraform插件通常不知道二进制文件本身中的版本号,而是将其声明为文件名的一部分

例如,名为“foo”的q provider插件可能有一个文件名
terraform-provider-foo_v1.2.0
,然后告诉terraform Core在找到该插件时将其视为1.2.0版