如果使用Terraform提供程序出现“没有适合的版本安装”错误的情况下,可以采取以下解决方法
环境
-
- macOS Mojave 10.14.6
- Terraform 0.12.18
背景 – 情境
为了学习Terraform,创建了用于测试的resource.tf文件。
provider "aws" {
}
variable "AWS_REGION" {
type = string
}
resource "aws_instance" "example" {
ami = var.AMIS[var.AWS_REGION]
instance_type = "t2.micro"
}
terraform init 已经成功完成。
terraform init
错误内容 (Error content)
当运行terraform console时,会出现以下错误。
terraform console
Error: Could not satisfy plugin requirements
Plugin reinitialization required. Please run "terraform init".
Plugins are external binaries that Terraform uses to access and manipulate
resources. The configuration provided requires plugins which can't be located,
don't satisfy the version constraints, or are otherwise incompatible.
Terraform automatically discovers provider requirements from your
configuration, including providers used in child modules. To see the
requirements and constraints from each module, run "terraform providers".
Error: provider.aws: no suitable version installed
version requirements: "(any version)"
versions installed: none
如前所述,已经执行了terraform init,但由于出现了Error: provider.aws: no suitable version installed的错误,说明terraform-provider-aws没有正确安装。
当我用谷歌搜索时,似乎有很多人在遇到同样的问题。
应对方法
由于terraform init无法正常工作,因此需要手动安装插件。
手动安装
首先使用 terraform-provider-aws 下载 zip 文件。(如果是 macOS,请选择 darwin_amd64 )
将下载的文件解压到 ~/.terraform.d/plugins/darwin_amd64 目录下。
cd ~/.terraform.d/
mkdir plugins
cd plugins
mkdir darwin_amd64
cd darwin_amd64
unzip ../../../Downloads/terraform-provider-aws_2.43.0_darwin_amd64.zip
手动安装已完成。
pwd
/Users/[username]/.terraform.d/plugins/darwin_amd64
ls
terraform-provider-aws_v2.43.0_x4
使用terraform init命令时,可以指定-plugin-dir选项。
继续错误内容
在手动安装后,如果执行 terraform console,仍然会出现相同的错误。
terraform console
Error: Could not satisfy plugin requirements
Plugin reinitialization required. Please run "terraform init".
Plugins are external binaries that Terraform uses to access and manipulate
resources. The configuration provided requires plugins which can't be located,
don't satisfy the version constraints, or are otherwise incompatible.
Terraform automatically discovers provider requirements from your
configuration, including providers used in child modules. To see the
requirements and constraints from each module, run "terraform providers".
Error: provider.aws: no suitable version installed
version requirements: "(any version)"
versions installed: none
继续措施
当使用 -plugin-dir 标志指定插件路径来进行 terraform init 时,错误问题得以解决。
terraform init -plugin-dir="/Users/[username]/.terraform.d/plugins/darwin_amd64"
terraform console
>
参考文献
-
- Terraform Provider がないエラー対処 – infraya.work
- Terraform plan for a custom provider giving “no suitable version installed” #16127