为什么 Terraform 看不到我手动安装的提供程序?
Why doesn't Terraform see my manually installed provider?
我正在尝试安装 RKE provider as part of the Rancher AWS quickstart. The Terraform documentation 说插件应该安装在 ~/.terraform.d/plugins
。 RKE 文档说插件应该安装在 ~/terraform.d/plugins/<your_platform>
。
为了协调冲突信息,我尝试将二进制文件复制到以下所有位置,但 Terraform 从未见过任何位置:
~/.terraform.d/plugins/terraform-provider-rke
~/.terraform.d/plugins/rke
~/.terraform.d/plugins/darwin_amd64/terraform-provider-rke
~/.terraform.d/plugins/darwin_amd64/rke
~/terraform.d/plugins/terraform-provider-rke
~/terraform.d/plugins/rke
~/terraform.d/plugins/darwin_amd64/terraform-provider-rke
~/terraform.d/plugins/darwin_amd64/rke
在每种情况下,当我 运行 terraform init
时,我得到以下错误:
Provider "rke" not available for installation.
A provider named "rke" could not be found in the Terraform Registry.
This may result from mistyping the provider name, or the given provider may
be a third-party provider that cannot be installed automatically.
In the latter case, the plugin must be installed manually by locating and
downloading a suitable distribution package and placing the plugin's executable
file in the following directory:
terraform.d/plugins/darwin_amd64
Terraform detects necessary plugins by inspecting the configuration and state.
To view the provider versions requested by each module, run
"terraform providers".
Error: no provider exists with the given name
作为最后的手段,我可以使用 terraform init -plugin-dir=<something>
。但是 Terraform 没有看到任何自动下载的插件,我必须手动安装所有东西。
是否缺少某些路径变量,或者我没有遵循的其他命名约定?
事实证明,错误消息并没有说明全部情况。 Terraform 正在寻找提供程序,但它认为它的版本不够新。
按照Terraform's documentation, the provider needs to be named as terraform-provider-<NAME>_vX.Y.Z
. The documentation for the RKE provider的说法,该文件应该叫terraform-provider-rke
(无版本号)。
在comment in the Terraform source code for plugin discovery中,它表示支持这种无版本格式以实现反向兼容性。但是,Terraform 将版本解释为 v0.0.0
。
当我运行terraform plan
失败后terraform init
,它给了我一个更详细的错误信息:
Error: provider.rke: no suitable version installed
version requirements: "0.14.1"
versions installed: "0.0.0"
该版本可能是另一个依赖于 RKE 供应商的供应商的要求。
我返回并从 Github 存储库中手动下载了确切的版本,并将其复制到名称为 terraform-provider-rke_v0.14.1
的插件目录中。成功了!
好了。如有疑问,请查看源代码。现在向 Rancher 提交问题报告,告诉他们更新文档。 :-)
对于使用公司防火墙的 Windows 用户,不允许直接下载提供商 zip 文件。
- 访问相应的 URL.
即可下载提供商 ZIP 文件
- 父级-URL: https://releases.hashicorp.com/
- AWS-URL: https://releases.hashicorp.com/terraform-provider-aws/3.37.0/
- 现在,在根目录中 - main.tf 包含提供程序部分的文件。
- 创建类似 registry.terraform.io\hashicorp\aws.37.0\windows_amd64 的文件夹结构,并将从上述 zip 中提取的 exe 文件放在该位置。
- 转到命令行和运行:
terraform init -plugin-dir .
目录结构:
- main.tf
- registry.terraform.io\hashicorp\aws.37.0\windows_amd64\terraform_provider_aws_v3.37.0_x5.exe
aws_v3.37.0_x5.exe
我正在尝试安装 RKE provider as part of the Rancher AWS quickstart. The Terraform documentation 说插件应该安装在 ~/.terraform.d/plugins
。 RKE 文档说插件应该安装在 ~/terraform.d/plugins/<your_platform>
。
为了协调冲突信息,我尝试将二进制文件复制到以下所有位置,但 Terraform 从未见过任何位置:
~/.terraform.d/plugins/terraform-provider-rke
~/.terraform.d/plugins/rke
~/.terraform.d/plugins/darwin_amd64/terraform-provider-rke
~/.terraform.d/plugins/darwin_amd64/rke
~/terraform.d/plugins/terraform-provider-rke
~/terraform.d/plugins/rke
~/terraform.d/plugins/darwin_amd64/terraform-provider-rke
~/terraform.d/plugins/darwin_amd64/rke
在每种情况下,当我 运行 terraform init
时,我得到以下错误:
Provider "rke" not available for installation.
A provider named "rke" could not be found in the Terraform Registry.
This may result from mistyping the provider name, or the given provider may
be a third-party provider that cannot be installed automatically.
In the latter case, the plugin must be installed manually by locating and
downloading a suitable distribution package and placing the plugin's executable
file in the following directory:
terraform.d/plugins/darwin_amd64
Terraform detects necessary plugins by inspecting the configuration and state.
To view the provider versions requested by each module, run
"terraform providers".
Error: no provider exists with the given name
作为最后的手段,我可以使用 terraform init -plugin-dir=<something>
。但是 Terraform 没有看到任何自动下载的插件,我必须手动安装所有东西。
是否缺少某些路径变量,或者我没有遵循的其他命名约定?
事实证明,错误消息并没有说明全部情况。 Terraform 正在寻找提供程序,但它认为它的版本不够新。
按照Terraform's documentation, the provider needs to be named as terraform-provider-<NAME>_vX.Y.Z
. The documentation for the RKE provider的说法,该文件应该叫terraform-provider-rke
(无版本号)。
在comment in the Terraform source code for plugin discovery中,它表示支持这种无版本格式以实现反向兼容性。但是,Terraform 将版本解释为 v0.0.0
。
当我运行terraform plan
失败后terraform init
,它给了我一个更详细的错误信息:
Error: provider.rke: no suitable version installed
version requirements: "0.14.1"
versions installed: "0.0.0"
该版本可能是另一个依赖于 RKE 供应商的供应商的要求。
我返回并从 Github 存储库中手动下载了确切的版本,并将其复制到名称为 terraform-provider-rke_v0.14.1
的插件目录中。成功了!
好了。如有疑问,请查看源代码。现在向 Rancher 提交问题报告,告诉他们更新文档。 :-)
对于使用公司防火墙的 Windows 用户,不允许直接下载提供商 zip 文件。
- 访问相应的 URL. 即可下载提供商 ZIP 文件
- 父级-URL: https://releases.hashicorp.com/
- AWS-URL: https://releases.hashicorp.com/terraform-provider-aws/3.37.0/
- 现在,在根目录中 - main.tf 包含提供程序部分的文件。
- 创建类似 registry.terraform.io\hashicorp\aws.37.0\windows_amd64 的文件夹结构,并将从上述 zip 中提取的 exe 文件放在该位置。
- 转到命令行和运行:
terraform init -plugin-dir .
目录结构:
- main.tf
- registry.terraform.io\hashicorp\aws.37.0\windows_amd64\terraform_provider_aws_v3.37.0_x5.exe
aws_v3.37.0_x5.exe