【发布时间】:2021-09-24 11:07:27
【问题描述】:
我们一直在使用旧版本的 Terraform 和 azurerm 提供程序,我正在尝试更新每个(对我们而言)新版本的代码,在这种情况下:
- 地形:v0.13.7
- azurerm:v2.25
作为重新编码的一部分,我将改用 Terraform 提供程序块:
terraform {
required_version = "~> 0.13"
required_providers {
azurerm = {
version = "= 2.25.0"
source = "hashicorp/azurerm"
}
}
}
provider azurerm {
skip_provider_registration = true
features {}
}
Terraform 正在下载提供者的 v2.25 也是最新的 v2.67 版本:
$ terraform init
Initializing the backend...
Initializing provider plugins...
- terraform.io/builtin/terraform is built in to Terraform
- Finding hashicorp/azurerm versions matching "2.25.0"...
- Finding latest version of -/azurerm...
- Installing hashicorp/azurerm v2.25.0...
- Installed hashicorp/azurerm v2.25.0 (signed by HashiCorp)
- Installing -/azurerm v2.67.0...
- Installed -/azurerm v2.67.0 (signed by HashiCorp)
到目前为止,这似乎不是问题,但我不明白为什么它要下载多个版本。可能是因为在另一个定义后端的代码文件中(我们使用 Azure 存储作为 Terraform 状态),它看到“azurerm”引用并将其视为“新”引用?
terraform {
backend azurerm {
container_name = "terraforminfra-v2"
key = "state/postgres.tfstate"
}
}
【问题讨论】:
-
提供者可能在不同的
required_providers块中同时指定了新旧命名空间。升级到 Terraform 0.14 会提示您解决此问题,因为该版本需要新的命名空间。
标签: azure terraform terraform-provider-azure