如何使用多个ARM模板创建多个Service Bus Topic?

How Do I Create Multiple Service Bus Topics Using Multiple ARM Templates?

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

假设我有 2 个模板,它们都有各自的资源。现在,在命令提示符下,他们可以选择部署 template1、template2 或两者。如果选择了 template1,它应该部署它的资源以及一个服务总线和一个名为 'Topic-Template1' 的主题——如果选择了 template2,它应该做同样的事情,但是有一个名为 'Topic-Template2' 的主题——但是,如果选择 'BOTH' 作为参数值,那么我仍想部署一个服务总线,但现在有两个主题:'Topic-Template1' & 'Topic-Template2'.

有没有办法只使用这两个模板而不嵌套它们并假设我这样做是通过从 PowerShell 脚本中按顺序调用两个新的部署命令来实现的,如果选择了 'BOTH'

假设这是用于部署模板 1 或模板 2 的 PowerShell 脚本中的逻辑:

# 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
    }

我认为这没有任何问题,只需创建 2 个模板并让它们按照您的要求进行操作即可。它会起作用的。

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