Terraform 什么';这是地形点';s模块?

Terraform 什么';这是地形点';s模块?,terraform,Terraform,我对Terraform的模块有点好奇。他们的观点到底是什么?我一直认为它应该节省我的时间,没有复制粘贴,等等,但我想我可能没有抓住要点,因为我不明白为什么我会使用它们 我只使用过一次,所以我的经验有限。我必须创建两个不同的环境,我不知道为什么我会选择它。如果我必须做10个环境,也许我会有不同的看法。 这些环境将位于不同的帐户中,使用不同的VPC、不同的IAM。。。这让我觉得我可以创建2个文件夹并引用一些变量 关于“无拷贝粘贴”,在我看来,你做了一个文件,然后引用模块和变量。在某些时候,您仍然需要

我对Terraform的模块有点好奇。他们的观点到底是什么?我一直认为它应该节省我的时间,没有复制粘贴,等等,但我想我可能没有抓住要点,因为我不明白为什么我会使用它们

我只使用过一次,所以我的经验有限。我必须创建两个不同的环境,我不知道为什么我会选择它。如果我必须做10个环境,也许我会有不同的看法。 这些环境将位于不同的帐户中,使用不同的VPC、不同的IAM。。。这让我觉得我可以创建2个文件夹并引用一些变量

关于“无拷贝粘贴”,在我看来,你做了一个文件,然后引用模块和变量。在某些时候,您仍然需要编写所有的资源(例如int-sg、test-sg)。那么,为什么不直接将其写入正确的文件夹中呢


我希望这个问题是有意义的,我希望任何建设性的意见

模块缩进到需要多次的组资源中

假设您有三个环境
dev
staging
prod
。 您希望尽可能使它们保持相等,尤其是
staging
prod

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

因此,您可以保持资源的通用性,还可以确保Terraform将自动平等地更新所有环境,以防您更改模块中的资源。 因此,您将有一个应用修改的单点,而不是编辑所有环境文件中所有更改的资源

现在,假设您有2到3个以上的环境(或相同资源组的用例),您将看到模块的优势;)