Как выбрать правильного поставщика докеров в terraform 0.14
Для интеграции с Docker я настроил свою терраформу следующим образом:
Требуемый провайдер:
docker = {
source = "kreuzwerker/docker"
version = "2.11.0"
}
конкретизации этого поставщика:
provider "docker" {
}
И напоследок использую в ресурсе следующим образом :
data "docker_registry_image" "myapp" {
name = some_image_url
}
Когда я бегу
terraform init
, похоже, это все еще относится к "старому" провайдеру терраформ от HashiCorp:
Initializing modules...
Initializing the backend...
Initializing provider plugins...
- Finding hashicorp/random versions matching "3.0.1"...
- Finding hashicorp/null versions matching "~> 3.0.0"...
- Finding hashicorp/external versions matching "~> 2.0.0"...
- Finding kreuzwerker/docker versions matching "2.11.0"...
- Finding latest version of hashicorp/docker...
- Finding hashicorp/google versions matching "~> 3.56.0"...
- Finding hashicorp/azurerm versions matching "~> 2.46.1"...
- Installing hashicorp/null v3.0.0...
- Installed hashicorp/null v3.0.0 (signed by HashiCorp)
- Installing hashicorp/external v2.0.0...
- Installed hashicorp/external v2.0.0 (signed by HashiCorp)
- Installing kreuzwerker/docker v2.11.0...
- Installed kreuzwerker/docker v2.11.0 (self-signed, key ID 24E54F214569A8A5)
- Installing hashicorp/google v3.56.0...
- Installed hashicorp/google v3.56.0 (signed by HashiCorp)
- Installing hashicorp/azurerm v2.46.1...
- Installed hashicorp/azurerm v2.46.1 (signed by HashiCorp)
- Installing hashicorp/random v3.0.1...
- Installed hashicorp/random v3.0.1 (signed by HashiCorp)
Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://www.terraform.io/docs/cli/plugins/signing.html
Error: Failed to query available provider packages
Could not retrieve the list of available versions for provider
hashicorp/docker: provider registry registry.terraform.io does not have a
provider named registry.terraform.io/hashicorp/docker
If you have just upgraded directly from Terraform v0.12 to Terraform v0.14
then please upgrade to Terraform v0.13 first and follow the upgrade guide for
that release, which might help you address this problem.
Did you intend to use kreuzwerker/docker? If so, you must specify that source
address in each module which requires that provider. To see which modules are
currently depending on hashicorp/docker, run the following command:
terraform providers
Когда я бегу
terraform providers
Я действительно вижу ссылку, вызванную
docker_registry_image
:
...
├── provider[registry.terraform.io/hashicorp/docker]
...
Примечания:
- Все остальные поставщики используют последнюю версию.
- Я использую terraform 0.14.6.
- Приведенный выше ресурс - единственный ресурс докеров, который я использую.
- Я уже пробовал использовать псевдоним для провайдера и ресурса, но это не работает.
Как я могу это решить? Спасибо!
1 ответ
Похоже, мы не правильно перенеслись.
Я решил это, вернув свою версию terrorm обратно на
0.13
и бег
terraform 0.13upgrade
. После выполнения команды я обновился до
0.14.6
снова и все заработало.
источник: https://www.terraform.io/docs/cli/commands/0.13upgrade.html
Что сделала команда?
Это создало файл в моей папке модуля (где я использую ресурс докера) с именем
versions.tf
со следующим содержанием:
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
}
google = {
source = "hashicorp/google"
}
random = {
source = "hashicorp/random"
}
}
required_version = ">= 0.13"
}
Он также создал файл в моем рабочем каталоге, который содержал:
terraform {
required_version = ">= 0.13"
}
(Поставщики находились в другом файле и уже имели правильный источник докеров, поэтому в новый файл было добавлено только требуемое дополнение версии.)