使用ARM模板更新资源组-无法创建Linux应用服务计划

时间:2020-02-24 09:41:56

标签: azure azure-devops

我有一条管道,该管道将使用ARM模板更新我的Azure资源组。在我的资源组中,我有一个Linux应用程序服务计划。当我的管道运行时,出现以下错误:

2020-02-24T09:13:47.8665770Z ##[error]The template deployment 'template-20200224-091344-94a5' is not valid according to the validation procedure. The tracking id is 'cba7977a-ed1a-4807-a8bb-d7387bb9eae1'. See inner errors for details.
2020-02-24T09:13:47.8673575Z ##[error]Details:
2020-02-24T09:13:47.8683161Z ##[error]ValidationForResourceFailed: Validation failed for a resource. Check 'Error.Details[0]' for more information. [{"code":"FreeLinuxSkuNotAllowedInResourceGroup","message":"Cannot create a Linux app service plan because there is a limit of 1 free tier linux app service plan per subscription."}]
2020-02-24T09:13:47.8695096Z ##[error]Task failed while creating or updating the template deployment.

我认为管道仅应更新我的应用程序服务计划,但似乎正在尝试创建一个新的计划。因此,我想发生的事情是它将创建一个新的,然后删除旧的。但是,由于有1个Linux应用服务计划的限制,并且已经存在一个,因此它不能这样做。

所以我的问题是,如何使我的管道仅覆盖旧的应用程序服务计划,而不是创建新的计划并删除旧的服务计划?

这是ARM模板中的资源:

{
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2018-02-01",
      "name": "[parameters('serverfarms_project_api_name')]",
      "location": "West Europe",
      "tags": {
        "Environment": "Dev"
      },
      "sku": {
        "name": "F1",
        "tier": "Free",
        "size": "F1",
        "family": "F",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "maximumElasticWorkerCount": 1,
        "isSpot": false,
        "reserved": true,
        "isXenon": false,
        "hyperV": false,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    }

1 个答案:

答案 0 :(得分:0)

用于arm模板更新现有资源-资源名称必须完全匹配。那是唯一的把戏。如果名称匹配-将更新资源,而不是创建一个具有相同名称的新资源(不是可能的)。