terraform - 地形版本.tf
问题描述
你好我使用 terraform 的 v13 版本,因为这个版本的发布我们被迫通过带有 required_providers 块的 version.tf 系统。CF https://www.terraform.io/docs/configuration/provider-requirements.html。
我有一个调用子模块 terraform 的 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"
}
我有我的version.tf,如下所示
terraform {
required_providers {
wab = {
source = "private-registry.example.com/org/wab"
version = "1.3.2"
}
vault = {
source = "hashicorp/vault"
}
}
required_version = ">= 0.13"
}
到目前为止,一切都很好
我启动了我的 terraform13 init 我遇到了以下问题
错误:无法安装提供程序
安装 hashcorp/wab 时出错:提供程序注册表 registry.terraform.io 没有名为 registry.terraform.io/hashicorp/wab 的提供程序
terraform 在我的模块内的私有注册表中找不到提供程序。我尝试从 Internet 下载,所以我将 version.tf 复制粘贴到目录 ./wab-device
它的工作就像一个魅力。
但理论上是可以的。在实践中,我无法修改我的模块 wab-device,因为它是一个 git repo,我不是所有者,我必须对其他 5 个 repos 做同样的事情......
我们如何在不指定 submodule 中的 version.tf 的情况下使用模块。我可以改用别名吗?或 .terraformrc
谢谢你的建议我会帮助我
问候
解决方案
在 Terraform 中,每个模块都负责声明自己的依赖项。这类似于在大多数其他编程语言生态系统中,库如何声明它依赖的其他库。
出于这个原因,不可能强制一个模块依赖一个它还没有依赖的新提供者。您需要要求该模块的维护者添加必要的依赖项声明,或者分叉模块并将声明添加到您的副本中。
由于这个“wab”模块不是 HashiCorp 本身在 Terraform v0.13 之前分发的提供商之一,因此您尝试使用的模块很可能是为 Terraform v0.12 而不是为 Terraform v0.13 设计的。在这种情况下,另一种方法是将 Terraform v0.12 也用于您的配置,并保持在该版本上,直到您所依赖的所有模块都更新为与 Terraform v0.13 兼容。
推荐阅读
- react-native - 在本机反应的设备上启用检查模式或密码
- android - Room Insert Completable stop working after two or three inserts
- java - eclipse.ini 未在 Mac OS 上检测到 jvm
- excel - Excel从第n个位置获取子字符串直到字符串的末尾
- node.js - Firebase 通知无法通过 HTTP.post 创建设备组
- javascript - 将 JSON 对象导出到另一个 .js 没有类声明 react-native
- python - Python - Django 在两个经过身份验证的用户之间共享文件
- android - 如何在各自时区的午夜准确地使文件可用于 android 应用程序
- c# - 如何验证来自 MVC 的 API 调用
- firebase - FCM 向多个主题推送通知