如何使用多个ARM模板创建多个服务总线主题?

时间:2017-07-06 20:34:33

标签: powershell azure azureservicebus azure-resource-manager arm-template

我想知道是否有一种快速而肮脏的方法可以使用单独的模板在已创建的Service Bus上创建新主题?

假设我有2个模板,两个模板都有各自的资源。现在,在命令提示符下,他们可以选择部署template1,template2或BOTH。如果选择了template1,它应该将其资源与服务总线以及名为' Topic-Template1'的主题一起部署。 - 如果选择了template2,它应该做同样的事情,但主题名为' Topic-Template2' - 但是,如果' BOTH'选择作为参数值,然后我想部署一个服务总线,但现在有两个主题:'主题 - 模板1' &安培; '主题-则Template2'

有没有办法只使用这两个模板来实现这一点而不进行嵌套,并假设我是通过从PowerShell脚本顺序调用两个新的部署命令来实现的,如果' BOTH&#39 ;被选中

假设这是PowerShell脚本中用于部署template1或template2的逻辑:

# Determine which application to deploy
switch ($ApplicationDeployment.ToLower())
{ 
    #Deploys template1
    "template1" {
        New-AzureRmResourceGroupDeployment -Name "temp1-$(get-date -f yyyy-MM-dd)" -ResourceGroupName $ResourceGroupName `
                                    -TemplateFile $temp1TemplateFile -TemplateParameterFile $temp1TemplateParametersFile `
                                    -Force -Verbose 2>> $temp1ErrorFileName | Out-File $temp1LogFileName -ErrorVariable ErrorMessages
    } 

    #Deploys template2
    "template2" {
        New-AzureRmResourceGroupDeployment -Name "temp2-$(get-date -f yyyy-MM-dd)" -ResourceGroupName $ResourceGroupName `
                                    -TemplateFile $temp2TemplateFile -TemplateParameterFile $temp2TemplateParametersFile `
                                    -Force -Verbose 2>> $temp2ErrorFileName | Out-File $temp2LogFileName -ErrorVariable ErrorMessages 
    } 

    #Deploys both the template1 & template2 templates
    "both" {
        New-AzureRmResourceGroupDeployment -Name "temp1-$(get-date -f yyyy-MM-dd)" -ResourceGroupName $ResourceGroupName `
                                    -TemplateFile $temp1TemplateFile -TemplateParameterFile $temp1TemplateParametersFile `
                                    -Force -Verbose 2>> $temp1ErrorFileName | Out-File $temp1LogFileName -ErrorVariable ErrorMessagess

        New-AzureRmResourceGroupDeployment -Name "temp2-$(get-date -f yyyy-MM-dd)" -ResourceGroupName $ResourceGroupName `
                                    -TemplateFile $temp2TemplateFile -TemplateParameterFile $temp2TemplateParametersFile `
                                    -Force -Verbose 2>> $temp2ErrorFileName | Out-File $temp2LogFileName -ErrorVariable ErrorMessages
    }

1 个答案:

答案 0 :(得分:1)

我没有看到任何问题,只需创建2个模板,让他们做你想做的事情。它会起作用。

但是您的方法充其量是有缺陷的,最好将该逻辑合并到模板中,并使模板根据您的输入决定部署什么