如何通过ADO将多个应用程序服务部署到Azure资源组中的单个应用程序服务计划中?

时间:2019-08-06 15:11:41

标签: azure templates

我们有一个在Azure中使用9种不同的微服务的应用程序。当前,每个应用程序服务都已部署到自己的应用程序服务计划中。这相当昂贵,而且我们认为我们有足够的规模来将所有9个应用程序服务部署到资源组中的单个应用程序服务计划中。默认情况下,ARM模板并非微不足道,而这让我很头疼。

我考虑的第一个选择是在主微服务ARM模板中使用对应用程序服务计划的名称引用,然后希望它已经存在,而不会尝试重新创建计划。与往常一样,Azure在增量中的含义在世界各地与其他地方有所不同,因为它始终会出错。

第二个选项是使用链接模板。这里的问题是我希望这是从一路提交的代码到目标环境中已部署和测试的应用程序服务的交钥匙部署。我们有多个订阅,我不想在多个位置维护模板。我宁愿在源代码管理Git上控制模板,然后将名称作为模板的参数进行处理。

我显然不了解ARM模板的资源部分是如何工作的,因为我认为增量ADO部署将确保它不会变得愚蠢,并尝试重新创建应用程序服务计划!

            "comments": "[concat('App Service for', parameters('serviceDisplayName'))]",
            "type": "Microsoft.Web/sites",
            "name": "[variables('fullServiceName')]",
            "apiVersion": "2015-08-01",
            "location": "[parameters('region')]",
            "tags": {
                "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('fullAppServicePlanName'))]": "empty"
            },
            "properties": {
                "name": "[variables('fullServiceName')]",
                "serverFarmId": "[variables('fullAppServicePlanName')]",
                "siteConfig": {
                    "AlwaysOn": false
                }
            }```



What I am after here is best practice for an approach that allows for:

1. Source code control of the ARM templates
2. Conditional creation of app service plan if it does not exist
3. 9 different ADO Releases that each can execute #2 if required but regardless will allow the respective app service to be deployed to the same app service plan.

0 个答案:

没有答案