Terraform自定义提供程序-请求用户输入时出错

Terraform自定义提供程序-请求用户输入时出错,terraform,Terraform,我是terraform和golang的新手,我正在尝试为POC实现一个定制的提供者,以检查我们是否可以利用terraform供我们自己使用 我能够根据视频和一些GitHub示例编写和构建golang提供者 我创建了一个go工作区,并将$GOPATH设置为默认值$HOME/go Terraform软件包安装在$GOPATH/src/github/hashicorp Terraform二进制文件安装在$HOME/dev中,并在$PATH中指定 根据视频,我在/terraform/builtin/pr

我是terraform和golang的新手,我正在尝试为POC实现一个定制的提供者,以检查我们是否可以利用terraform供我们自己使用

我能够根据视频和一些GitHub示例编写和构建golang提供者

我创建了一个go工作区,并将$GOPATH设置为默认值$HOME/go

Terraform软件包安装在$GOPATH/src/github/hashicorp

Terraform二进制文件安装在$HOME/dev中,并在$PATH中指定

根据视频,我在/terraform/builtin/providers/mycustomprovider创建了provider包

“go build”将包的值设置为$GOPATH/bin

一旦我尝试“地形规划”,我会得到以下结果:

provider.incapsula:未安装合适的版本

版本要求:“(任何版本)”

安装的版本:无

我将自定义提供者二进制文件添加到terraform.d/plugins,并尝试再次运行“terraform plan”

现在我得到以下错误:

错误:请求用户输入时出错:发生1个错误: *provider.incapsula:fork/exec~/.terraform.d/plugins/darwin_amd64/terraform-provider-incapsula:权限被拒绝

我试图将chmod改为666并将二进制文件chown,但没有成功,我仍然得到相同的错误

我试图寻找这类问题,但找不到任何参考资料

我将感谢任何帮助


谢谢

提供程序二进制文件需要执行权限,因此请尝试使用755而不是666。此外,如果二进制文件不在
$PATH
中,通常需要运行'terraform init-plugin dir=.terraform/plugins/darwin_amd64',以便terraform选择提供程序并更新md5锁文件


因此,请尝试
chmod 755
,如果它仍然不工作,请使用
terraform init
,并将
-plugin dir
参数指向插件目录(您的提供商应该已经在那里了)。

您可以激活调试模式,然后重试,有什么有用的吗?
TF_LOG=debug terraform plan