Terraform多个版本的同一提供商

发布于 2025-02-14 02:22:08 字数 1190 浏览 27 评论 0原文

我很难使用多个版本的模块,我什至尝试使用别名,但它不起作用。这是一个示例代码。有人可以建议我做错了吗?或正确的方法。

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"]
}

I'm having hard time working with modules of multiple versions, i even tried using Alias but its not working. Here's an sample code. Can someone suggest where i'm doing wrong? or what's the correct way.

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"]
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

稀香 2025-02-21 02:22:09

谢谢 Martin Atkins 出于您的建议。增加了更多的积分和可能有助于其他社区成员的推荐。

没有办法使用多个版本的同一提供商
相同的配置。您需要制作所有模块
有一些提供商版本,它们都与之相互兼容,或者
将您的配置分为多个部分,以便每个部分都可以
取决于提供商的不同版本并应用
分别。

模块块中的继承和提供者参数是可以将提供者明确传递给继任模块的两种方法。您可以关注此 link < /a>对这两种选择更深入。

Thank You Martin Atkins for your suggestion. Adding few more points and referennce that might help other community member.

There is no way to use multiple versions of the same provider in the
same configuration. You will need to either make all of your modules
have some provider version they are all mutually compatible with, or
to split your configuration into multiple parts so that each part can
depend on a different version of the provider and be applied
separately.

Inheritance and the providers argument in a module block are the two methods that providers can be explicitly passed down to successor modules. you can follow this link go into greater depth about these two choices.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文