有条件地在资源管理器

时间:2017-01-16 14:18:06

标签: azure azure-resource-manager

我有一个ARM模板来为我的应用程序部署/更新完整的Azure基础结构。 我们的构建服务器应该运行模板,并添加/更新/删除添加/更改/删除的资源。为了完成这项工作,我选择了“完整”部署模式。

要测试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应用程序服务),但我们拥有的资源不需要在某些环境中部署。不同的环境将使用不同的定价计划,其中一些将需要部署插槽,其他环境不需要(以节省成本)。

我已经阅读过有关嵌套模板的内容,起初它似乎解决了我的问题...但事实并非如此。 我无法在“完全部署”中使用嵌套模板。

有没有人知道另一种方式,标记是否需要部署资源,是不是“嵌套模板”-approach并且适用于完整部署类型?

1 个答案:

答案 0 :(得分:1)

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