我是terraform和golang的新手,我正在尝试为POC实现自定义提供程序,以检查我们是否可以利用terraform供我们自己使用 .
我能够根据this视频和一些GitHub示例编写和构建golang提供程序 .
我创建了一个go工作区,将$ GOPATH设置为默认值,$ HOME / go .
Terraform包安装在$ GOPATH / src / github / hashicorp中 .
Terraform二进制文件安装在$ HOME / dev中,并在$ PATH中指定 .
根据视频,我在/ terraform / builtin / providers / mycustomprovider创建了提供程序包
然后将“go build”编辑到$ GOPATH / bin
一旦我尝试 'terraform plan' ,我得到以下内容:
provider.incapsula:没有合适的版本安装版本要求:“(任何版本)”版本安装:无
我将自定义提供程序二进制文件添加到terraform.d / plugins,并尝试再次运行“terraform plan” .
现在我收到以下错误:
错误:询问用户输入时出错:发生1个错误:* provider.incapsula:fork / exec~ / .terraform.d / plugins / darwin_amd64 / terraform-provider-incapsula:权限被拒绝
我试图chmod到666并且chown二进制文件,但没有运气,我仍然得到同样的错误 .
我试图寻找这种问题,但找不到任何参考 .
我将不胜感激任何帮助 .
谢谢!
1 回答
提供者二进制文件需要执行权限,因此请尝试使用755而不是666.如果二进制文件不在
$PATH
中的某个位置,则通常需要运行`terraform init -plugin-dir = .terraform / plugins / darwin_amd64“以便使用terraform picks提供程序并更新md5锁定文件 .所以尝试
chmod 755 <wherever the provider is>
并且如果它仍然无效,请使用terraform init
,其中-plugin-dir
参数指向插件目录(您的提供者应该已经在那里) .