Search code examples
azureazure-resource-managerazure-rm-templateazure-app-service-plansazure-autoscaling-block

Not able to add autoscaleout property for appservice plan using ARM template


I have created ARM template to add scale out property as per below using above template as reference

 {
  "type": "Microsoft.Web/serverfarms",
  "sku": {
    "name": "S1",
    "tier": "Standard",
    "size": "S1",
    "family": "S",
    "capacity": 1
  },
  "kind": "app",
  "name": "[variables('ServerFarm_gateway_name')]",
  "apiVersion": "2016-09-01",
  "location": "[resourceGroup().location]",
  "resources": [
    {
      "name": "[concat(variables('ServerFarm_gateway_name'),'-autoscaleout')]",
      "type": "Microsoft.Insights/autoscaleSettings",
      "apiVersion": "2015-04-01",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[concat('Microsoft.Web/serverfarms/', variables('ServerFarm_gateway_name'))]"
      ],
      "properties": {
        "name": "[concat(variables('ServerFarm_gateway_name'),'-autoscaleout')]",
        "enabled": true,
        "targetResourceLocation": "[resourceGroup().location]",
        "profiles": [
          {
            "name": "Auto created scale condition 1",
            "capacity": {
              "minimum": "1",
              "maximum": "5",
              "default": "1"
            }
          },
          {
            "name": "{\"name\":\"Auto created scale condition\",\"for\":\"Auto created scale condition 1\"}",
            "capacity": {
              "minimum": "1",
              "maximum": "5",
              "default": "1"
            }
          }
        ]
      }
    }
  ],
  "dependsOn": []
}

It is throwing error while deploy using VSTS pipeline.

##[error]At least one resource deployment operation failed. Please list deployment operations for 
   Please see https://aka.ms/DeployOperations for usage details.
   ##[error]Details:
   ##[error]BadRequest: {
  "code": "UnsupportedRequestContent",
  "message": "Request content is not well formed or supported."
  }
  ##[error]Task failed while creating or updating the template deployment.

When I remove the resource part from template then no issue.


Solution

  • I believe your issue is with your understanding of how autoscaling arm template works. These should be defined as a top-level resource and reference the resource it applies to.

    Your template should look something like this:

     { 
      "type": "microsoft.insights/autoscalesettings",
      "name": "[concat(variables('ServerFarm_gateway_name'),'-autoscaleout')]",
      "apiVersion": "2015-04-01",
      "location": "[resourceGroup().location]",
      "properties": {
        "profiles": [
          {
            "name": "Auto created scale condition 1",
            "capacity": {
              "minimum": "1",
              "maximum": "5",
              "default": "1"
            }
          }
        ],
        "enabled": true,
        "targetResourceUri": "[resourceId('Microsoft.Web/serverfarms', variables('ServerFarm_gateway_name'))]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('ServerFarm_gateway_name'))]"
      ]
    }