地形 |更改由 public 模块创建的资源
Terraform | Change a resource created by a public module
假设我正在借助无法直接更改的 public 或内部模块创建 AWS ECS 集群。该模块正在创建,除了 ECS,比方说几个 SG,一些 alb,也许是一个 ACM 证书,等等。这一切都很好但是,为了这个问题,我不喜欢 SG 配置并且想要更改它们,但开发人员没有为此提供 var。
有没有办法让我引用由该模块创建的特定 SG(或任何其他资源),然后 overwrite/change/replace 它的配置?
或者我是否必须在该模块的 repo 中创建一个 PR 以添加必要的 vars/changes?
在 Terraform 中,模块作者有责任决定该模块的范围并调整其输入变量和输出值以满足该范围。从调用者的角度来看,没有办法向模块添加额外的自定义功能,因为这会导致您的自定义实际上成为对模块作者不知道的模块未来更改的兼容性约束,因此不能预测。
如果某个特定模块不能满足您的需求,那么不幸的是,您的选择与大多数语言生态系统中 third-party 库的选择大致相同:
- 向维护者发送功能请求(也可能是实现该功能的拉取请求)并查看维护者是否愿意将您的新要求接受到他们的范围内。
- 假设该模块使用合适的开源许可证,将其用作您自己的模块的基础,该模块满足与原始模块类似的需求,但经过扩展以满足您的特定要求。
假设我正在借助无法直接更改的 public 或内部模块创建 AWS ECS 集群。该模块正在创建,除了 ECS,比方说几个 SG,一些 alb,也许是一个 ACM 证书,等等。这一切都很好但是,为了这个问题,我不喜欢 SG 配置并且想要更改它们,但开发人员没有为此提供 var。
有没有办法让我引用由该模块创建的特定 SG(或任何其他资源),然后 overwrite/change/replace 它的配置?
或者我是否必须在该模块的 repo 中创建一个 PR 以添加必要的 vars/changes?
在 Terraform 中,模块作者有责任决定该模块的范围并调整其输入变量和输出值以满足该范围。从调用者的角度来看,没有办法向模块添加额外的自定义功能,因为这会导致您的自定义实际上成为对模块作者不知道的模块未来更改的兼容性约束,因此不能预测。
如果某个特定模块不能满足您的需求,那么不幸的是,您的选择与大多数语言生态系统中 third-party 库的选择大致相同:
- 向维护者发送功能请求(也可能是实现该功能的拉取请求)并查看维护者是否愿意将您的新要求接受到他们的范围内。
- 假设该模块使用合适的开源许可证,将其用作您自己的模块的基础,该模块满足与原始模块类似的需求,但经过扩展以满足您的特定要求。