Azure devops 如何配置ARM模板和参数文件以跨不同环境创建多个service bus主题
My repo为两种不同的环境提供了不同的arm模板(azure部署json文件)。每个环境都有自己的服务总线名称空间。我想在arm模板中为每个环境生成相同的主题列表 我想在他们的透视arm模板中保留服务总线名称空间名称,但我不确定我这样做是否正确 主题列表将位于parameters.json文件中。我想对两个环境/模板使用相同的参数文件。我也不确定这是否可行。从中,可能无法使用相同的参数文件 我将其用作创建主题循环的参考 以下是armtemplate.json文件的示例:Azure devops 如何配置ARM模板和参数文件以跨不同环境创建多个service bus主题,azure-devops,azure-resource-manager,servicebus,arm-template,azure-servicebus-topics,Azure Devops,Azure Resource Manager,Servicebus,Arm Template,Azure Servicebus Topics,My repo为两种不同的环境提供了不同的arm模板(azure部署json文件)。每个环境都有自己的服务总线名称空间。我想在arm模板中为每个环境生成相同的主题列表 我想在他们的透视arm模板中保留服务总线名称空间名称,但我不确定我这样做是否正确 主题列表将位于parameters.json文件中。我想对两个环境/模板使用相同的参数文件。我也不确定这是否可行。从中,可能无法使用相同的参数文件 我将其用作创建主题循环的参考 以下是armtemplate.json文件的示例: ... "para
...
"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",
"location": "[resourceGroup().location]",
"copy": {
"name": "topicLoop",
"count": "[length(parameters('serviceBusTopics'))]"
},
"properties": {},
"dependsOn": [
"[concat('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]"
]
},
....
"parameters": {
"serviceBusTopics": {
"value": [
"topic1",
"topic2"
]
}
}
以下是parameters.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",
"location": "[resourceGroup().location]",
"copy": {
"name": "topicLoop",
"count": "[length(parameters('serviceBusTopics'))]"
},
"properties": {},
"dependsOn": [
"[concat('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]"
]
},
....
"parameters": {
"serviceBusTopics": {
"value": [
"topic1",
"topic2"
]
}
}
我配置了Azure管道来构建和部署Azure资源。当我导航到Azure门户并检查每个服务总线时,我希望看到创建的主题。然而,这对我不起作用
我可以为不同的模板/环境使用相同的参数文件吗?
语法上,我有任何错误吗?一种方法是使用参数文件,每个环境一个 然后在管道中指定正确的参数文件 另一种方法是根本不使用参数文件,只使用Azure DevOps内部的变量
我意识到这是一个简短的回答,希望现在还可以因为每个环境都有自己的模板文件,您只需使用服务总线和主题参数更新所有文件,并像上面那样将主题列为资源。defaultvalue足以针对不同的服务总线。(可能不是最优雅的解决方案,但它确实有效) 我发现,我的模板最初不起作用的原因是,使用该模板的管道与我的目标服务总线不在同一资源组中 当部署到同一资源组时,我上面所做的工作是有效的