Pulumi 中的 Terraform 模块相当于什么

What's the equivalent of Terraform modules in Pulumi

我一直在努力寻找关于 Pulumi 中 Terraform 模块的等效问题的答案,最接近的答案是这个 link 到这个 blog。请记住,我也是使用 Pulumi 的初学者。

使用 Terraform,您可以创建一个包含所有模块的 git 存储库,对其进行版本控制,然后使用 source = "git@github.com:xyz" 将其拉入各种其他 git 存储库。 Terraform 还允许您根据区域、帐号或环境等条件打开和关闭资源(使用模块和资源的 count 方法)。

显然 Pulumi 没有这个概念,看起来您需要在每个存储库中复制您的代码,或者创建一个包含所有代码的巨型单体存储库。我还想知道功能标志的最佳实践是什么,为每个特定堆栈打开和关闭资源,您将为此使用哪种条件。

再次感谢您的亮点!

大体上,您应该使用您选择的语言创建库,并将可重用函数、类 和组件放入其中。例如,如果您使用 TypeScript,您可以创建一个 NPM 模块(public 或私有),其中包含您希望跨项目和团队重用的任何代码。

更具体地说,如果您正在寻找一种将多种资源组合成可重用的更高级别抽象的方法,您可以将其实现为 Component Resource。一个组件将接受输入,在其构造函数中实例化一些资源,并 return 输出值。您仍然可以将一个组件(或多个组件)打包为可重用的库。

Pulumi 还允许您创建多语言组件,您可以用一种语言实现它,然后以所有支持的语言发布它供所有人使用。您可以在 Pulumi 注册表中将多语言组件作为包发送,以简化发现和安装。在 Pulumi Packages and multi-language Components and see other component in the Registry.

中阅读更多内容