【问题标题】:Terraform Provider-specify version of SDK to pull / Cannot use validation.StringInSlice type schema.SchemaValidateFunc as type SchemaValidateDiagFuncTerraform Provider-指定要提取的 SDK 版本/不能使用 validation.StringInSlice 类型 schema.SchemaValidateFunc 作为 SchemaValidateDiagFunc 类型
【发布时间】:2021-06-05 20:44:23
【问题描述】:

由于this problem,对于提供商而言,您似乎必须获得 SDK 的当前版本(发布时为 2.4.4)。 This post 有很多关于如何导入特定版本的包的信息,但肯定不是每个提供程序编写者都手动拉取最新版本的 SDK(或者他们是)?

我是 Go/Terraform 的新手,所以也许我遗漏了一些明显的东西,但我发现的提供者(包括官方示例)有类似的东西:

import(
    "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
    "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
    "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
)

当前版本不是 2 - 它是 2.4.4。现在我知道这些是本地路径,但让我感到困惑的是,当我运行 go get 之类的东西时,它会为我拉下这些路径。我试着做:

"github.com/hashicorp/terraform-plugin-sdk/v2.4.4/helper/schema"

但是go get 非常不喜欢这样。 go get 如何找到这些软件包版本?是否有一种导入语法可以让我获得最新版本或允许我更细化?在运行go get 之后,我还没有找到一个很好的方法来判断我拥有的 SDK 版本,但基于此错误消息:

看起来我有 2.0,因为据我了解,该错误已在较新版本的 SDK 中得到修复。

【问题讨论】:

    标签: go terraform terraform0.12+


    【解决方案1】:

    我想通了。该行为由go.mod 文件控制。

    在那里你会发现:

    require (
        github.com/hashicorp/terraform-plugin-sdk v1.14.0 // indirect
        github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.1
    

    正如@JimB 所述,v2 是插件的major versionv2.0.1 是 GitHub 标签。将此更改为 v2.4.4 可获得所需的行为。

    【讨论】:

    猜你喜欢
    • 2021-06-15
    • 2019-10-14
    • 1970-01-01
    • 2020-01-17
    • 2020-10-22
    • 1970-01-01
    • 2023-03-29
    • 2017-12-05
    • 2014-09-11
    相关资源
    最近更新 更多