Terraform同一提供商的多个版本



我很难与多个版本的模块工作,我甚至尝试使用别名,但它不起作用。下面是一个示例代码。有人能告诉我哪里做错了吗?或者什么是正确的方法。

providers = {
azurerm = azurerm
azurerm.permission = azurerm.permission
}

terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version         = "~> 2.76.0"
}
azurerm = {
source = "hashicorp/azurerm"
version         = "~> 3.7.0"
configuration_aliases = [azurerm.permission]
}
provider "azurerm" {
features {}
subscription_id = data.vault_generic_secret.vault-spoke-spn.data["subscription_id"]
tenant_id       = data.vault_generic_secret.vault-spoke-spn.data["tenant_id"]
client_id       = data.vault_generic_secret.vault-spoke-spn.data["client_id"]
client_secret   = data.vault_generic_secret.vault-spoke-spn.data["client_secret"]
}
provider "azurerm" {
features {}
alias = "permission"
subscription_id = data.vault_generic_secret.vault-spoke-spn.data["subscription_id"]
tenant_id       = data.vault_generic_secret.vault-spoke-spn.data["tenant_id"]
client_id       = data.vault_generic_secret.vault-spoke-spn.data["client_id"]
client_secret   = data.vault_generic_secret.vault-spoke-spn.data["client_secret"]
}

谢谢Martin Atkins的建议。添加一些可能对其他社区成员有所帮助的要点和参考。

无法在相同的配置。您将需要制作所有模块是否有一些它们都相互兼容的提供程序版本将您的配置拆分为多个部分,以便每个部分可以依赖于不同版本的提供程序并应用分开。

继承和提供者参数在一个模块块是供应商的两个方法可以明确地传递给继任者模块。您可以遵循链接对这两个选择进行更深入的讨论。

最新更新