Terraform的模块有什么意义?

时间:2019-05-22 14:20:25

标签: terraform

我对Terraform的模块有点好奇。他们的观点到底是什么?我一直看到它应该可以节省我的时间,没有复制粘贴之类的东西,但是我想我可能遗漏了一点,因为我不明白为什么要使用它们?

我只使用过一次,所以经验有限。我必须创建2个不同的环境,但我不确定为什么要这么做。如果必须要做10个环境,也许我会有不同的看法。 这些环境将位于不同的帐户中,使用不同的vpc,不同的IAM,...导致我认为我基本上可以创建2个文件夹并引用一些变量。

关于“禁止复制粘贴”,在我看来,您创建了一个文件,该文件随后引用了模块和变量。在某个时候,您仍然需要编写所有资源(例如,int-sg,test-sg)。那么为什么不直接将其写到正确的文件夹中呢?

我希望这个问题有意义,我希望您提出任何建设性意见

1 个答案:

答案 0 :(得分:1)

模块缩进以对需要多次的资源进行分组。

假设您拥有三个环境devstagingprod。 您可能希望使它们尽可能相等,尤其是stagingprod

因此,如果要使用EIP创建服务器,某些安全组以及需要访问的任何安全组,则可以创建一个模块来对这些资源进行分组。 然后,该模块可以轻松地包含在各个环境的.tf文件中,并且每个环境具有不同的参数

因此,您可以保持资源的通用性,并具有Terraform会在您更改模块中的资源的情况下自动平均更新所有环境的优势。 这样,您就可以在单一位置应用修改,而不用编辑所有env文件中所有已更改的资源。

现在仅想象您拥有2个或3个以上的环境(或相同资源组的用例),并且您会看到模块的优势;)