Terraform模块中的条件源码

3

我正在尝试根据条件触发器设置模块的来源(这不是资源),但看起来模块在逻辑应用之前就被触发了:

module "my_module" {
    source   = "${var.my_field == "" ? var.standard_repo : var.custom_repo}"
    stuff...
    more stuff...
}

我已经创建了standard_repocustom_repo变量,并分别使用git::定义了相应的仓库URL(这一切都可以在没有条件的情况下工作)。
话虽如此,有人知道如何实现这个有条件的方面吗?(再次强调,这是一个模块而不是一个资源
我尝试使用重复模块并基于变量值进行调用,但这也不起作用(即使条件得到满足时,它也不会被满足)。
repo = ["${var.my_field == "na" ? module.my_module_old : module.my_module_new}"]
2个回答

2

有一种实现方式在这篇文章中描述。

基本上,一个常见的模式是为不同环境(如dev/tst/prd)设置几个文件夹。这些环境通常会重用代码库的大部分内容。有些可能被抽象为模块,但通常还有一个大型的共同文件,要么是复制粘贴,要么是符号链接。

该文章提供了一种不基于变量条件禁用的方法,但它可能解决了您根据不同环境启用模块的问题。它利用terraform的覆盖功能并添加了一个infra_override.tf文件。在这里,它为模块定义了不同的source,指向一个空目录。哇,一个禁用的模块。


3
在文章中提到,使用覆盖功能是实现这一目标的最佳方式吗?现在仍然是最佳方式吗? - undefined

0

尝试在帖子中使用链接作为超链接。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接