我有重复的代码 - 有没有办法 extend/reuse terraform 模块?

I have duplicate code - is there a way to extend/reuse terraform modules?

我已经复制并粘贴了大块的 terraform,这通常是我缺少一些可以整理东西的语言功能的标志(对 tf 来说相对较新)。

示例:

module "my_module"
{
   source = "../something"
   some_var = "a value"
   another_var = "another value"
   wow_more_var = "wow"
   a_module_specific_var = "1"
}

module "another_module"
{
   source = "../something"
   some_var = "a value"
   another_var = "another value"
   wow_more_var = "wow"
   a_module_specific_var = "2"
}

如您所见 - 这些模块声明的唯一不同之处在于 a_module_specific_var(最后)。我在这里缺少哪种语言功能可以让我抽象出公共部分?如果这是在我常用的 Node 中,我会把它拉到一个 JS 函数中,然后将 12 作为参数传递。

您可以将 countfor_each 与模块一起使用,已记录 here。我会创建一个包含那些模块特定变量的列表,然后使用 for_each,像这样:

module "my_module"
{
   for_each =  toset( ["1", "2"] )
   source = "../something"
   some_var = "a value"
   another_var = "another value"
   wow_more_var = "wow"
   a_module_specific_var = each.key
}