我有一个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
选择.tf
文件kubw-aws
吗?还是我应该做其他任何事情来使这项工作。
当您的工作目录时,kube-aws
目录中的资源将不包括在内scripts
。在此实例中,该scripts
目录被视为根模块(请参见模块文档):
运行terraform plan或terraform时,工作目录中的.tf文件一起应用于根模块。
您有两种选择来包含kube-aws
资源:
scripts
目录。scripts/*.tf
然后传递所需的变量。例如,在s3.tf
:
module "kube_aws" {
source = "./kube-aws"
// pass in your variables here
}
您所做的选择完全取决于您,但是何时编写模块的指导很有说服力:
我们不建议编写仅作为单个其他资源类型的精简包装的模块。如果您找不到与模块内部主要资源类型不同的模块名称,则可能表明模块未创建任何新的抽象,因此模块增加了不必要的复杂性。只需直接在调用模块中使用资源类型即可。
我建议上面的选项1,即.tf
至少将文件移动到一个目录中,直到您清楚何时使用模块以及如何最佳地构造它们为止。我也强烈建议您熟悉有关模块和模块组成的官方(且非常好的)文档,以及在Terraform Registry中查看示例模块及其相关的源代码(可在模块页面上找到源代码的链接)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句