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.tfprovider "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 init 下载它们