设置Go环境以创建自定义Terraform提供程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置Go环境以创建自定义Terraform提供程序相关的知识,希望对你有一定的参考价值。
我在尝试创建Terraform提供程序时遇到了困难。我一直在遵循https://www.terraform.io/docs/extend/writing-custom-providers.html上的建议,但是当我通过Go go build -o terraform-provider-example
构建我的二进制文件时,我遇到了一些缺少软件包的错误。
因此,我从丢失的软件包列表中查找并使用go get ...
将这些软件包安装在Go库中。
我收到一个错误消息,指示找不到github.com/hashicorp/hcl/v2
。我导航到该位置,并确定它不存在。
Package not available at install time screen shot
Package not available with go get
因此,我陷入困境,无法建立这些提供程序。我已经寻找了一段时间,试图找到一些描述如何设置用于创建提供程序的环境的文件,但到目前为止还没有成功。谁能帮助我前进?
Terraform Core和Terraform提供程序开发需要在新的“模块模式”下使用Go工具链,在当前的Go版本中,它不是默认的。
确保您在模块模式下工作的最简单方法是在$GOPATH/src
目录的[[outside上克隆要使用的存储库。 GOPATH
之外的开发仅在模块模式下受支持,因此Go工具链假定您打算以这种方式使用模块模式。
github.com/hashicorp/hcl/v2
,这是旧GOPATH
模式不支持的模块路径类型,因为以前是Go工具链只能从Git信息库中特定远程依赖项的master
分支安装。模块路径github.com/hashicorp/hcl/v2
是使用HCL的第二个主要版本指定的“执行模块”方式,而github.com/hashicorp/hcl
是第一个主要版本。在模块模式下,仅运行go build -o terraform-provider-example
(或者,如果愿意,可以选择go install
)就足够了,它将自动获取对本地模块缓存的依赖关系并从那里使用它们。在模块模式下,go get
用于更改go.mod
中记录的依赖性,而不是用于安装现有的依赖性。
以上是关于设置Go环境以创建自定义Terraform提供程序的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Terraform 在自定义 VPC 中创建 Elastic Beanstalk 应用程序
schedult 上的 aws 自定义事件以触发 lambda 使用 Terraform