Google cloud platform 如何将地形文件(main.tf)拆分为多个文件(无模块)?

Google cloud platform 如何将地形文件(main.tf)拆分为多个文件(无模块)?,google-cloud-platform,terraform,Google Cloud Platform,Terraform,我有一个通过Terraform部署的GCP基础设施:Bucket、服务帐户、计算引擎、VPC、云SQL、BigTable、BigQuery、Composer等 地形v0.11.10 提供商“谷歌”(2.15.0) 最近,客户要求我将我们仅有的一个terraform文件(例如main.tf)拆分为多个文件。例如:一个文件用于存储桶,另一个用于服务帐户,另一个用于数据库服务等 我只有一个位于GCP存储桶中的地形状态文件 我怎样才能以最低的影响做到这一点?地球形态的国家呢?(还会有多个状态文件吗?还是

我有一个通过Terraform部署的GCP基础设施:Bucket、服务帐户、计算引擎、VPC、云SQL、BigTable、BigQuery、Composer等

地形v0.11.10 提供商“谷歌”(2.15.0)

最近,客户要求我将我们仅有的一个terraform文件(例如main.tf)拆分为多个文件。例如:一个文件用于存储桶,另一个用于服务帐户,另一个用于数据库服务等

我只有一个位于GCP存储桶中的地形状态文件

我怎样才能以最低的影响做到这一点?地球形态的国家呢?(还会有多个状态文件吗?还是只保留一个TF文件的想法,即使我们将代码分开?)

注意:这与地形模块无关,只是将一个地形文件(.tf)划分为多个文件(.tf)


提前谢谢

命令
terraform apply
可以应用于文件或目录。因此,将所有文件放在一个目录中并应用它们

tfstate文件是相对于部署的。你只有一个


关于最低的影响。。。很难说。所有这些都取决于变量和资源依赖关系。如果您必须搜索多个文件以了解资源的创建方式或变量的设置位置,那么多个文件不是一个好主意。。。但是,这是您的客户要求,并且为了可读性,它要简单得多。

Terraform没有对您使用的文件名和拥有的文件数赋予任何特殊含义。Terraform将读取所有
.tf
文件,并将其内容放在一起考虑

<> p>因此,您可以将代码块从.<代码>主体.tf>代码>文件中移到尽可能多的单独的<>代码> .tf>代码>文件中,在您喜欢的目录中,Terraform将认为配置完全等同,只要您在执行这些块时,在这些内容的内容中什么也不改变。
(有一种特殊情况使得上述说法不完全正确。只要您避免命名任何文件
override.tf
或使用
\u override.tf
后缀,这种特殊情况将不适用,但我只是为了完整性才提出来。)

您可以按照“”进行尝试。我相信它在您的场景中会很有用。

即使您的项目中没有包含任何模块。Terraform始终在单个根模块的上下文中运行。
.tf
文件位于
root
模块下

基于地形文件:

Terraform评估模块中的所有配置文件,有效地将整个模块视为单个文档。将不同的块分割成不同的文件纯粹是为了方便读者和维护人员,对模块的行为没有影响


链接可能会失效;可以参考他们,但不应依赖他们来形成答案。请在这里添加答案。但是资源名称呢?我可以在多个文件中使用相同的组合。file1.tf资源“类型”“此”file2.tf资源“类型”“此”