Terraform version.tf



你好,我使用terraform的v13版本,因为这个版本的发布,我们被迫通过该版本。用required_providers块替换系统。CFhttps://www.terraform.io/docs/configuration/provider-requirements.html。

我有一个main。调用子模块地形的Tf脚本。像下面的

module "wab_device" {

source        = "./wab-device"
domain        = "aws.eu-west-1.example.com"
os            = "Linux"
hostnames     = { "JTUFFZ06TEST" : { "vm_name" : "JTUFFZ06TEST" } }
description   = "Test description use module wab tfv13"
support_group = "Support group"
}

,我有我的版本。如下面所示

terraform {
required_providers {
wab = {
source  = "private-registry.example.com/org/wab"
version = "1.3.2"
}
vault = {
source = "hashicorp/vault"
}
}
required_version = ">= 0.13"
}

so far, so good

我启动我的terraform13 init,我遇到了下面的问题

错误:安装提供程序失败

安装hashicorp/wab: provider registry registry.terraform.io时出错没有名为registry.terraform.io/hashicorp/wab的提供商

terraform在我的模块内部的私有注册表中找不到提供程序。我试着从网上下载复制粘贴版本。/wab-device

工作就像魅力。

但理论上是可以的。在实践中,我不能修改我的模块wab-device,因为它是一个git仓库,我不是所有者,我必须做同样的事情与其他5个仓库…

如何使用模块而不指定版本。子模块内的Tf。我可以用别名代替吗?或.terraformrc

谢谢你的建议,我会帮助我的

在Terraform中,每个模块负责声明自己的依赖项。这类似于在大多数其他编程语言生态系统中,一个库将声明它所依赖的其他库。

因此,不可能强迫一个模块依赖于它没有依赖的新提供商。你需要让该模块的维护者添加必要的依赖声明,或者fork该模块并将该声明添加到你的副本中。

Since this "wab"模块不是HashiCorp本身在Terraform v0.13之前发布的提供程序之一,很可能您尝试使用的模块是为Terraform v0.12而不是为Terraform v0.13设计的。在这种情况下,另一种方法是在您的配置中也使用Terraform v0.12,并保持在该版本,直到您所依赖的所有模块都更新为与Terraform v0.13兼容。

最新更新