Terraform:如何安装多个版本的提供程序插件? [复制]

Posted

技术标签:

【中文标题】Terraform:如何安装多个版本的提供程序插件? [复制]【英文标题】:Terraform: How to install multiple versions of provider plugins? [duplicate] 【发布时间】:2020-08-25 16:41:18 【问题描述】:

我正在尝试使用 azurerm 提供程序通过 Terraform 0.12 部署 Azure 资源。 我有 AKS 模块,它适用于 azurerm 版本 2.5.0,但与 2.9.0 不同。 另一方面,Postgresql 模块适用于 2.9.0 版本,但与 2.5.0 版本不同 我想通过单个 terraform 应用部署这两种资源。

我尝试了以下配置,但在初始化阶段失败了。

  provider "azurerm" 
  version = "=2.9.0"
  

  provider "azurerm" 
  alias = "latest"
  version = "=2.5.0"
  

$ terraform.exe init

Initializing the backend...

Initializing provider plugins...
- Checking for available provider plugins...

No provider "azurerm" plugins meet the constraint "=2.5.0,=2.9.0".

版本约束源自 配置中的提供程序“azurerm”块。子模块也可能适用 提供者版本限制。查看每个请求的提供程序版本 在当前配置中的模块,运行“terraform providers”。

要继续,必须通过以下方式放宽此提供程序的版本限制 调整或删除提供程序块中的“版本”参数 在整个配置过程中。

错误:没有合适的版本可用

如何安装两个提供程序版本并将 AKS 模块指向 v2.5.0 并将 Postgres 模块指向 v2.9.0

【问题讨论】:

当前版本的 terraform(0.12 和 0.13)无法做到这一点 【参考方案1】:

将代码分解为模块并在模块中添加提供程序部分,并在 main.tf 文件中以不同方式调用模块。

例子

模块/AKS

provider 

模块/数据库

provider 

现在以不同的方式调用您的模块

main.tf

module "AKS" 
  source = "../modules/AKS"


module "DB" 
  source = "../modules/DB"

【讨论】:

用于以下配置:AKS main.tf provider "azurerm" version = "= 2.5.0" Postgrsql main.tf provider "azurerm" version = "= 2.9.0" 运行“terraform init”后仍然出现相同的错误没有提供程序“azurerm”插件满足约束“= 2.5.0 ,= 2.9.0"

以上是关于Terraform:如何安装多个版本的提供程序插件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何安装多个或两个版本的 Terraform?

Terraform 使用本地提供程序/插件

为啥 Terraform 看不到我手动安装的提供程序?

使用预安装的 Terraform 插件,而不是使用 terraform init 下载它们

Terraform:如何在单个资源块中提供多个 lambda 函数 zip 文件

Terraform azure 不兼容的提供程序版本