在terraform中组织文件夹

在terraform中组织文件夹,terraform,Terraform,我有一个terraform设置,我在aws中创建资源,我使用s3、ec2以及kubernetes。对于kubernetes我有超过5个.tf文件。我创建了一个名为kube aws的文件夹,并将.tf文件放在那里。现在我有一个如下的设置 scripts/ | s3.tf ec2.tf kube-aws/ | web-deploy.tf web-service.tf app-deploy.tf app-service.tf 这是正确的方法吗?ter

我有一个
terraform
设置,我在
aws
中创建资源,我使用
s3
ec2
以及
kubernetes
。对于
kubernetes
我有超过5个
.tf
文件。我创建了一个名为
kube aws
的文件夹,并将
.tf
文件放在那里。现在我有一个如下的设置

scripts/
 |
  s3.tf
  ec2.tf
  kube-aws/
   | 
   web-deploy.tf
   web-service.tf
   app-deploy.tf
   app-service.tf  

这是正确的方法吗?
terraform
也会从
kubw-aws
文件夹中选择
.tf
文件吗?或者我应该做些其他的事情来完成这项工作。

脚本
是您的工作目录时,
kube aws
目录中的资源将不包括在内。
scripts
目录在此实例中被视为根模块(请参阅):

运行terraform plan或terraform apply时,工作目录中的.tf文件一起构成根模块

您有两个选项可以包括
kube aws
资源:

  • 将它们上移到
    脚本
    目录
  • 在一个
    脚本/*.tf
    文件中创建一个块,并传入所需的变量
  • 例如,在,比如说,
    s3.tf

    模块“kube_aws”{ source=“./kube-aws” //在这里输入变量 } 您所做的选择完全取决于您,但中的指导非常有说服力:

    我们不建议编写仅仅是围绕单个其他资源类型的薄型包装的模块。如果您很难找到与模块中的主资源类型不同的模块名称,这可能表明您的模块没有创建任何新的抽象,因此模块增加了不必要的复杂性。只需直接在调用模块中使用资源类型即可

    我建议您选择上面的选项1,即将
    .tf
    文件移动到单个目录中,至少在您明确何时使用模块以及如何最好地构建模块之前。我还强烈建议您熟悉和的官方(和优秀)文档,并查看中的示例模块及其相关源代码(可以在模块页面上找到指向源代码的链接)