如何配置ARM模板和参数文件以在不同环境中创建多个服务总线主题

我的仓库针对两个不同的环境具有不同的手臂模板(azure部署json文件)。每个环境都有其自己的服务总线名称空间。我想为手臂模板中的每个环境生成相同的主题列表。

我想将服务总线名称空间名称保留在它们的透视图臂模板中,但是我不确定是否以正确的方式进行操作。

主题列表将在parameter.json文件中。我想对两个环境/模板使用相同的参数文件。我也不确定这是否可能。在this article中,可能无法使用相同的参数文件。

我使用this site作为创建主题循环的参考。

以下是armtemplate.json文件的示例:

...
 "parameters": {
        "serviceBusnamespaceName": {
            "type": "string","defaultvalue": "serviceBusname1","metadata": {
                "description": "Name of the Service Bus namespace"
            }
        },"serviceBusTopics": {
            "type": "array","metadata": {
                "description": "List of topics"
            }
        },...
"resources": [
        {
            "apiVersion": "2017-04-01","name": "[parameters('serviceBusnamespaceName')]","type": "microsoft.ServiceBus/namespaces","location": "[resourceGroup().location]","sku": {
                "name": "Standard"
            },"properties": {}
        },{
            "apiVersion": "2017-04-01","name": "[concat(parameters('serviceBusnamespaceName'),'/',parameters('serviceBusTopics')[copyIndex()])]","type": "microsoft.ServiceBus/namespaces/topics","copy": {
                "name": "topicLoop","count": "[length(parameters('serviceBusTopics'))]"
            },"properties": {},"dependsOn": [
                "[concat('microsoft.ServiceBus/namespaces/',parameters('serviceBusnamespaceName'))]"
            ]
        },....

这是parameters.json文件:

"parameters": {
        "serviceBusTopics": {
            "value": [
                "topic1","topic2"
            ]
        }
    }

我已将Azure Pipelines配置为构建和部署Azure资源。当我导航到Azure门户并检查每个服务总线时,希望看到创建的主题。但是,这对我不起作用。

我可以将同一参数文件用于不同的模板/环境吗? 语法上,我有任何错误吗?

lanybo 回答:如何配置ARM模板和参数文件以在不同环境中创建多个服务总线主题

一种方法是使用参数文件,每种环境使用一种 然后在管道中指定正确的参数文件

另一种方法是根本不使用参数文件,而仅使用Azure DevOps内部的变量

我意识到这是一个简短的答案,希望现在可以

,

因为每个环境都有其自己的模板文件,所以您只需要使用服务总线和主题参数更新所有文件,并将主题作为资源列出即可,就像我上面所做的那样。默认值足以用于定位不同的服务总线。 (可能不是最优雅的解决方案,但它可以工作)

我发现我的模板最初不起作用的原因是因为使用该模板的管道与我定位的服务总线不在同一资源组中。

我在部署到同一资源组时所做的上述工作。

本文链接:https://www.f2er.com/3164810.html

大家都在问