Pulumi 中的抽象配置
Abstracting configuration in Pulumi
我一直在学习 Pulumi(非常棒的工具!)并且遇到了以下情况。让我们假设我有一堆我想部署到多个环境的资源。对于每个环境,我希望有不同的名称(例如,dev == "dev" 中的 ResourceGroup,qa =="qa" 等)。我怎样才能通过 Pulumi 实现这一目标?我想避免的是将所有配置(针对所有环境)添加到一个 Pulumi 配置文件中。使用少量资源它可能会工作,但如果数量更多,我想这个文件将变得不可读。我想到的唯一解决方案是为所有资源创建一个组件,然后为每个环境创建一个堆栈,该堆栈可以将组件与资源一起使用。但也许有更好的选择?
Pulumi stacks 就是专门为此设计的。您可以拥有一个 pulumi 项目文件,该文件可以通过堆栈部署到多个环境中。
为每个堆栈获取不同的名称:
Create a stack加上环境名称,例如:
pulumi stack init dev
使用 pulumi.getStack()
在您的代码中获取堆栈名称。
它将看起来像这样:
const stack = pulumi.getStack()
const resourceGroup = new azure.core.ResourceGroup("group", {
name: `group-{stack}` // use stack name as part of resource name
location: "West US"
});
This example is for JS, but you can find references for other languages in linked docs
除了栈名,还可以有单独的configuration values per stack - https://www.pulumi.com/docs/intro/concepts/project/#stack-settings-file
- 有关如何组织堆栈和环境的更多信息,请参阅 Organizing projects stacks。
- 更真实example of using stack name as part of resource name
我一直在学习 Pulumi(非常棒的工具!)并且遇到了以下情况。让我们假设我有一堆我想部署到多个环境的资源。对于每个环境,我希望有不同的名称(例如,dev == "dev" 中的 ResourceGroup,qa =="qa" 等)。我怎样才能通过 Pulumi 实现这一目标?我想避免的是将所有配置(针对所有环境)添加到一个 Pulumi 配置文件中。使用少量资源它可能会工作,但如果数量更多,我想这个文件将变得不可读。我想到的唯一解决方案是为所有资源创建一个组件,然后为每个环境创建一个堆栈,该堆栈可以将组件与资源一起使用。但也许有更好的选择?
Pulumi stacks 就是专门为此设计的。您可以拥有一个 pulumi 项目文件,该文件可以通过堆栈部署到多个环境中。
为每个堆栈获取不同的名称:
Create a stack加上环境名称,例如:
pulumi stack init dev
使用
pulumi.getStack()
在您的代码中获取堆栈名称。它将看起来像这样:
const stack = pulumi.getStack() const resourceGroup = new azure.core.ResourceGroup("group", { name: `group-{stack}` // use stack name as part of resource name location: "West US" });
This example is for JS, but you can find references for other languages in linked docs
除了栈名,还可以有单独的configuration values per stack - https://www.pulumi.com/docs/intro/concepts/project/#stack-settings-file
- 有关如何组织堆栈和环境的更多信息,请参阅 Organizing projects stacks。
- 更真实example of using stack name as part of resource name