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