首页 > 解决方案 > 我有重复的代码 - 有没有办法扩展/重用 terraform 模块?

问题描述

我已经复制并粘贴了大块 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 函数中,然后将1or2作为参数传递。

标签: terraformterraform-modules

解决方案


您可以使用countfor_each与模块一起使用,在此处记录。我将创建一个包含这些模块特定变量的列表,然后使用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
}

推荐阅读