在资源管理器中有条件地部署资源

Conditionally deploy a resource in resource manager

我有一个 ARM 模板 deploy/update 我的应用程序的完整 Azure 基础结构。 我们的构建服务器应该 运行 模板和 add/update/delete 资源 add/changed/deleted。为了完成这项工作,我选择了 "Complete" 部署模式。

要测试 ARM 模板,我必须遵循 power shell 脚本:

 param(
   $tenantId = "",
   $subscriptionId = ""
)
Clear-Host
Login-AzureRmAccount -TenantId $tenantId -SubscriptionId $subscriptionId 
New-AzureRmResourceGroupDeployment `
    -Name "x" `
    -ResourceGroupName "rg-test" `
    -TemplateFile $PSScriptRoot/resource-template.json `
    -TemplateParameterFile  $PSScriptRoot/parameters-test.json `
    -Mode Complete

此powershell脚本仅用于测试模板,因为一个vsts发布步骤将负责将ARM模板执行到资源组中。

我们想使用 1 个模板来部署所有内容(为简单起见,只是一个 Web 服务计划和一个 Web 应用程序服务),但我们有一些资源不需要在某些环境中部署。不同的环境将使用不同的定价计划,其中一些需要部署槽,另一些则不需要(以节省成本)。

我已经阅读了有关嵌套模板的内容,起初它似乎解决了我的问题...但事实并非如此。 我无法在 "Complete deployment".

中使用嵌套模板

有没有人知道另一种方法来标记资源是否需要部署,这不是 "nested-template" 方法并且适用于完整的部署类型?

我们可以为不同的环境(开发、测试或生产)创建不同的参数文件,然后我们可以通过提供为特定环境量身定制的值来自定义部署。此外,正如我们所知,我们可以使用 嵌套模板 进行条件部署,但只允许使用 root-level 模板 Complete为部署模式。如果您必须使用完整模式,您可能需要编写脚本根据您的需求和业务逻辑为不同的环境动态生成您的模板。