「指定された制約 ( >= 2.23.0, >= 3.64.0, ~> 3.73, >= 5.20.0
) に一致する利用可能なリリースがありません」 というエラー
$ terraform init
... 略 ...
╷
│ Error: Failed to query available provider packages
│
│ Could not retrieve the list of available versions for provider hashicorp/aws:
| no available releases match the given constraints >= 2.23.0, >= 3.64.0, ~> 3.73,
│ >= 5.20.0
╵
このエラーは、以下のように制約を満たすプロバイダのバージョンが存在しない状況で発生します。
-
2.23.0
以降のバージョン -
3.64.0
以降のバージョン -
3.73
以上4.0
未満のバージョン -
5.20.0
以降のバージョン
この不整合を解決するには、利用しているモジュールが依存しているプロバイダのバージョンを確認し、制約を満たすようにモジュールのバージョンを調整していきます。
※ ちなみに今回エラーが起こっているプロバイダは hashicorp/aws
です。
$ terraform providers
Providers required by configuration:
.
├── provider[registry.terraform.io/hashicorp/aws] ~> 3.73
├── provider[registry.terraform.io/hashicorp/null]
├── provider[registry.terraform.io/hashicorp/tls]
├── provider[registry.terraform.io/hashicorp/kubernetes] ~> 2.5.0
├── provider[registry.terraform.io/hashicorp/helm] ~> 2.6.0
├── module.eks
│ ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│ ├── provider[registry.terraform.io/hashicorp/tls] >= 2.2.0
│ ├── module.eks_managed_node_group
│ │ ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│ │ ├── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│ │ └── module.user_data
│ │ └── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│ ├── module.fargate_profile
│ │ └── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│ └── module.self_managed_node_group
│ ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│ ├── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│ └── module.user_data
│ └── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
├── module.iam_assumable_role_admin
│ └── provider[registry.terraform.io/hashicorp/aws] >= 2.23.0
└── module.vpc
└── provider[registry.terraform.io/hashicorp/aws] >= 5.20.0
プロバイダの依存リストを見ると module.vpc
が >= 5.20.0
に依存しており、これが ~> 3.73
と不整合を起こしているようです。
今回は module.vpc
で利用している terraform-aws-modules/vpc/aw
のバージョンを下げることで、不整合を解決してみます。
vpc.tf
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> 3.0" // バージョン指定を追加
name = "eks-vpc"
cidr = "10.0.0.0/16"
// ... 省略 ...
}
terraform-aws-modules/vpc/aws
のバージョンを ~> 3.0
に設定したところ、terraform init に成功しました。
プロバイダの依存関係の制約も満たすことができています。
$ terraform init -upgrade
... 略 ...
Terraform has been successfully initialized!
... 略 ...
$ terraform providers
Providers required by configuration:
.
├── provider[registry.terraform.io/hashicorp/kubernetes] ~> 2.5.0
├── provider[registry.terraform.io/hashicorp/null]
├── provider[registry.terraform.io/hashicorp/tls]
├── provider[registry.terraform.io/hashicorp/helm] ~> 2.6.0
├── provider[registry.terraform.io/hashicorp/aws] ~> 3.73
├── module.vpc
│ └── provider[registry.terraform.io/hashicorp/aws] >= 3.73.0
├── module.eks
│ ├── provider[registry.terraform.io/hashicorp/tls] >= 2.2.0
│ ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│ ├── module.eks_managed_node_group
│ ├── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│ ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│ └── module.user_data
│ └── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│ ├── module.fargate_profile
│ └── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│ └── module.self_managed_node_group
│ ├── provider[registry.terraform.io/hashicorp/aws] >= 3.64.0
│ ├── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
│ └── module.user_data
│ └── provider[registry.terraform.io/hashicorp/cloudinit] >= 2.0.0
└── module.iam_assumable_role_admin
└── provider[registry.terraform.io/hashicorp/aws] >= 2.23.0