Go 未能实例化Terraform云的提供程序-自定义提供程序-[fork/exec-exec格式错误]

Go 未能实例化Terraform云的提供程序-自定义提供程序-[fork/exec-exec格式错误],go,terraform,terraform-provider-aws,go-build,terraform-cloud,Go,Terraform,Terraform Provider Aws,Go Build,Terraform Cloud,我正在尝试为Terraform构建一个AWS自定义提供程序 提供者就在这个存储库中:我已经按照上的所有说明创建提供者二进制文件 我已按照以下说明为Terraform cloud构建和配置自定义提供程序: 因此,基本上,我将二进制文件放在以下目录结构中,以便Terraform Cloud获取它:Terraform.d/plugins/linux\u amd64/ 但是,当我使用编译的二进制文件运行repo时,在Terraform cloud上会出现以下错误: 错误:未能实例化提供程序“aws”以获

我正在尝试为Terraform构建一个AWS自定义提供程序

  • 提供者就在这个存储库中:我已经按照上的所有说明创建提供者二进制文件

  • 我已按照以下说明为Terraform cloud构建和配置自定义提供程序:

  • 因此,基本上,我将二进制文件放在以下目录结构中,以便Terraform Cloud获取它:Terraform.d/plugins/linux\u amd64/

    但是,当我使用编译的二进制文件运行repo时,在Terraform cloud上会出现以下错误:

    错误:未能实例化提供程序“aws”以获取架构:fork/exec/terraform/aws_tf/terraform.d/plugins/linux_amd64/terraform-provider-aws:exec格式错误

    我在谷歌上搜索了一下,发现我必须静态编译二进制文件并指定体系结构,我使用以下命令:

    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build-v-a-ldflags'-w-extldflags'-static'

    如果我运行文件以获取二进制文件的详细信息,它将显示为静态链接的
    文件地形提供程序aws:ELF 64位LSB可执行文件,x86-64,版本1(SYSV),静态链接,而非剥离

    但在地形云上,它仍然返回相同的错误

    我首先在Linux Mint 19.3(我正在使用的操作系统)上构建了二进制文件,当它不起作用时,我创建了一个Ubuntu18.04虚拟机并在那里进行了尝试(因为文档说Terraform Cloud在Ubuntu上运行,所以我认为这会有所不同),但仍然没有成功


    如果有人曾经这样做过,或者谁知道我哪里弄错了,请帮助我。我在这里发疯了。

    这个问题有些奇怪

    第一句话:
    • 当我下载带有curl的第三方提供程序时,它不起作用

    • 当我从浏览器手动下载它时,它确实可以工作

    第二句话
    • 使用curl下载时,下载的文件具有以下权限/详细信息:
    -rwxr-xr-x 1 abdennour staff 653 Jul 18 12:06地形提供程序文件
    
    • 当我从浏览器手动下载时,我得到:
    -rwxr-xr-x@1 abdennour staff 29358832 Jul 18 12:22地形提供程序文件
    
    我可以在这里看到,
    curl
    没有下载完整的文件,因为与手动下载相比,文件大小太小

    另外,当我手动下载文件时,有
    @
    作为文件权限的后缀


    我不知道为什么。但是现在它工作了

    你用这个有什么进展吗?我还编写了自己的提供程序,并且有一个非常类似的问题
    错误:未能实例化提供程序“xxx”以获取模式:fork/exec。。。。。。。。。权限被拒绝
    它在本地工作正常,但我无法让它在Terraform CloudYes上运行,这是因为我使用的是git lfs,而目前Databricks不支持它。他们有一个内部功能请求:1137372123087938以添加对fot git lfs的支持。为了解决这个问题,我必须确保我编译的二进制文件不超过100MB。当我使用helmfile provider时也会发生这种情况。非常奇怪的问题