【发布时间】:2022-06-11 02:05:21
【问题描述】:
我的环境太大/太复杂,无法使用单个 Terraform 状态文件进行管理 - 所以我们需要有多个状态文件。我们目前的想法是每个对象类型都有一个状态文件 - 有很好的理由像这样构造它,所以我正在寻找使用这种结构的解决方案,而不是建议不同结构的解决方案。
配置每种对象类型的逻辑都封装在其自己的模块中,即有一个用于创建 AWS S3 存储桶的独立模块,一个用于创建雪花存储集成对象的独立模块等。
还有更高级别的模块通过调用较低级别的模块来配置更复杂的基础架构,即,因为有一种常见的模式是先配置 S3 存储桶,然后再配置引用 S3 存储桶的雪花存储集成对象,因此会是一个调用S3模块,然后调用雪花存储集成模块的模块。
是否有可能在使用 S3 模块配置 S3 存储桶时,它始终使用相同的 S3 状态文件 - 无论是直接调用该 S3 模块还是从更高级别的模块调用它?
因此,如果调用更高级别的模块,则 S3 配置将使用 S3 状态文件,而存储集成配置将使用存储集成状态文件
【问题讨论】:
-
“我们目前的想法是每个对象类型都有一个状态文件 - 有很好的理由像这样构造它” 除了 Terraform 根本不是这样工作的,你根本不能以这种方式使用 Terraform,所以除了你所有的好理由,你根本不能这样做。我认为您是在尝试将 Terraform 融入您对它应该是什么的想法中,而不是先了解它是什么以及它是如何工作的,然后才考虑您的公司如何使用它。
-
好的 - 感谢 cmets。我得出的结论是,不幸的是,Terraform 不会像我们想要的那样为我们工作。可能有一种方法可以通过将大量业务流程/逻辑从 Terraform 移到另一个与 Terraform 接口的系统中来使其工作
-
就目前而言,您需要将 Terraform 拆分为许多不同的项目,每个项目都有自己的 Terraform 状态,而不是拥有一个单一的 Terraform 项目。但即便如此,这个问题和您之前的问题中仍有一些问题,会引发很多关于您如何尝试管理可能与任何 IaaS 产品不兼容的云基础设施的危险信号。
标签: terraform