Ошибка в шаблоне ARM при создании учетной записи хранения и служб приложений

Можно ли создать план обслуживания, службу приложения и учетную запись хранения в одной группе ресурсов с использованием шаблона ARM ?, когда я пытаюсь это сделать, я получаю следующую ошибку:

Ошибка Azure: сообщение InvalidTemplateDeployment: развертывание шаблона «XXXX» недопустимо в соответствии с процедурой проверки. Идентификатор отслеживания: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX. Подробнее см. Внутренние ошибки. Сведения об исключении: Код ошибки: PreflightValidationCheckFailed Сообщение: Ошибка предварительной проверки. Пожалуйста, обратитесь к подробным сведениям о конкретных ошибках.

Но если я использую разные группы ресурсов и разные шаблоны, это хорошо работает.

Полный шаблон ARM:

    {
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "webAppName": {
            "type": "String",
            "metadata": {
                "description": "The App Service name."
            }
        },
        "sku": {
            "type": "string",
            "defaultValue": "F1",
            "metadata": {
                "description": "The SKU of App Service Plan."
            }
        },
        "storageAccountName": {
            "type": "string",
            "metadata": {
                "description": "The Storage Account name."
            }
        }
    },
    "variables": {
        "appServicePlanName": "[concat('AppServicePlan-', parameters('webAppName'))]",
        "location": "[resourceGroup().location]"
    },
    "resources": [
        //App services plan
        {
            "apiVersion": "2020-06-01",
            "type": "Microsoft.Web/serverfarms",
            "name": "[variables('appServicePlanName')]",
            "location": "[variables('location')]",
            "sku": {
                "name": "[parameters('sku')]"
            },
            "properties": {
                    "name": "[variables('appServicePlanName')]"
            }
        },
        //App Service
        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-11-01",
            "name": "[parameters('webAppName')]",
            "location": "[variables('location')]",
            "kind": "app",
            "dependsOn": [
                "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
            ],
            "properties": {
                "enabled": true,
                "hostNameSslStates": [
                    {
                        "name": "[concat(parameters('webAppName'),'.azurewebsites.net')]",
                        "sslState": "Disabled",
                        "hostType": "Standard"
                    },
                    {
                        "name": "[concat(parameters('webAppName'),'.scm.azurewebsites.net')]",
                        "sslState": "Disabled",
                        "hostType": "Repository"
                    }
                ],
                "reserved": false,
                "isXenon": false,
                "hyperV": false,
                "siteConfig": {},
                "scmSiteAlsoStopped": false,
                "clientAffinityEnabled": true,
                "clientCertEnabled": false,
                "hostNamesDisabled": false,
                "containerSize": 0,
                "dailyMemoryTimeQuota": 0,
                "httpsOnly": false,
                "redundancyMode": "None"
            }
        },
        {
            "type": "Microsoft.Web/sites/config",
            "apiVersion": "2018-11-01",
            "name": "[concat(parameters('webAppName'), '/web')]",
            "location": "[variables('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]"
            ],
            "properties": {
                "numberOfWorkers": 1,
                "defaultDocuments": [
                    "Default.htm",
                    "Default.html",
                    "Default.asp",
                    "index.htm",
                    "index.html",
                    "iisstart.htm",
                    "default.aspx",
                    "index.php",
                    "hostingstart.html"
                ],
                "netFrameworkVersion": "v2.0",
                "requestTracingEnabled": false,
                "remoteDebuggingEnabled": false,
                "httpLoggingEnabled": false,
                "logsDirectorySizeLimit": 35,
                "detailedErrorLoggingEnabled": false,
                "publishingUsername": "$AdAstraflexSurveyWebAppTest",
                "azureStorageAccounts": {},
                "scmType": "None",
                "use32BitWorkerProcess": true,
                "webSocketsEnabled": false,
                "alwaysOn": false,
                "managedPipelineMode": "Integrated",
                "virtualApplications": [
                    {
                        "virtualPath": "/",
                        "physicalPath": "site\\wwwroot",
                        "preloadEnabled": false
                    }
                ],
                "loadBalancing": "LeastRequests",
                "experiments": {
                    "rampUpRules": []
                },
                "autoHealEnabled": false,
                "localMySqlEnabled": false,
                "ipSecurityRestrictions": [
                    {
                        "ipAddress": "Any",
                        "action": "Allow",
                        "priority": 1,
                        "name": "Allow all",
                        "description": "Allow all access"
                    }
                ],
                "scmIpSecurityRestrictions": [
                    {
                        "ipAddress": "Any",
                        "action": "Allow",
                        "priority": 1,
                        "name": "Allow all",
                        "description": "Allow all access"
                    }
                ],
                "scmIpSecurityRestrictionsUseMain": false,
                "http20Enabled": false,
                "minTlsVersion": "1.2",
                "ftpsState": "AllAllowed",
                "reservedInstanceCount": 0
            }
        },
        {
            "type": "Microsoft.Web/sites/hostNameBindings",
            "apiVersion": "2018-11-01",
            "name": "[concat(parameters('webAppName'), '/', parameters('webAppName'), '.azurewebsites.net')]",
            "location": "[variables('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]"
            ],
            "properties": {
                "siteName": "AdAstraflexSurveyWebAppTest",
                "hostNameType": "Verified"
            }
        },
        //Storage Accounts
        {
            "name": "[parameters('storageAccountName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2020-08-01-preview",
            "sku": 
            {
                "name": "Standard_RAGRS",
                "tier": "Standard"
            },
            "kind": "StorageV2",
            "location": "[variables('location')]",
            
            "properties": 
            {
                "minimumTlsVersion": "TLS1_2",
                "allowBlobPublicAccess": true,
                "networkAcls": 
                {
                    "bypass": "AzureServices",
                    "virtualNetworkRules": [],
                    "ipRules": [],
                    "defaultAction": "Allow"
                },
                "supportsHttpsTrafficOnly": true,
                "encryption": 
                {
                    "services": 
                    {
                        "file": 
                        {
                            "keyType": "Account",
                            "enabled": true
                        },
                        "blob": 
                        {
                            "keyType": "Account",
                            "enabled": true
                        }
                    },
                    "keySource": "Microsoft.Storage"
                },
                "accessTier": "Hot"
            }
        }
    ]
}

person Alejandro Gonzalez    schedule 29.01.2021    source источник
comment
Посмотрите, помогает ли этот вопрос   -  person Matt    schedule 30.01.2021
comment
Я предполагаю, что в вашем фактическом шаблоне нет комментариев типа //App services plan ?! Json не поддерживает комментарии   -  person silent    schedule 30.01.2021
comment
Ваш шаблон отлично работает на моей стороне, но, пожалуйста, убедитесь, что вы не добавляете комментарий типа //xxx в свой шаблон. :)   -  person Bowman Zhu    schedule 01.02.2021


Ответы (3)


Я попробовал ваш шаблон, с моей стороны он сработал хорошо. Вы можете попробовать это позже с новой группой ресурсов или со следующим шаблоном.

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "webAppName": {
        "type": "String",
        "metadata": {
            "description": "The App Service name."
        }
    },
    "sku": {
        "type": "string",
        "defaultValue": "F1",
        "metadata": {
            "description": "The SKU of App Service Plan."
        }
    },
    "storageAccountName": {
        "type": "string",
        "metadata": {
            "description": "The Storage Account name."
        }
    }
},
"variables": {
    "appServicePlanName": "[concat('AppServicePlan-', parameters('webAppName'))]",
    "location": "[resourceGroup().location]"
},
"resources": [
    //App services plan
    {
        "apiVersion": "2020-06-01",
        "type": "Microsoft.Web/serverfarms",
        "name": "[variables('appServicePlanName')]",
        "location": "[variables('location')]",
        "sku": {
            "name": "[parameters('sku')]"
        },
        "properties": {
                "name": "[variables('appServicePlanName')]"
        }
    },
    //App Service
    {
        "type": "Microsoft.Web/sites",
        "apiVersion": "2018-11-01",
        "name": "[parameters('webAppName')]",
        "location": "[variables('location')]",
        "kind": "app",
        "dependsOn": [
            "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
        ],
        "properties": {
            "enabled": true,
            "hostNameSslStates": [
                {
                    "name": "[concat(parameters('webAppName'),'.azurewebsites.net')]",
                    "sslState": "Disabled",
                    "hostType": "Standard"
                },
                {
                    "name": "[concat(parameters('webAppName'),'.scm.azurewebsites.net')]",
                    "sslState": "Disabled",
                    "hostType": "Repository"
                }
            ],
            "reserved": false,
            "isXenon": false,
            "hyperV": false,
            "siteConfig": {},
            "scmSiteAlsoStopped": false,
            "clientAffinityEnabled": true,
            "clientCertEnabled": false,
            "hostNamesDisabled": false,
            "containerSize": 0,
            "dailyMemoryTimeQuota": 0,
            "httpsOnly": false,
            "redundancyMode": "None"
        }
    },
    {
        "type": "Microsoft.Web/sites/config",
        "apiVersion": "2018-11-01",
        "name": "[concat(parameters('webAppName'), '/web')]",
        "location": "[variables('location')]",
        "dependsOn": [
            "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]"
        ],
        "properties": {
            "numberOfWorkers": 1,
            "defaultDocuments": [
                "Default.htm",
                "Default.html",
                "Default.asp",
                "index.htm",
                "index.html",
                "iisstart.htm",
                "default.aspx",
                "index.php",
                "hostingstart.html"
            ],
            "netFrameworkVersion": "v2.0",
            "requestTracingEnabled": false,
            "remoteDebuggingEnabled": false,
            "httpLoggingEnabled": false,
            "logsDirectorySizeLimit": 35,
            "detailedErrorLoggingEnabled": false,
            "publishingUsername": "$AdAstraflexSurveyWebAppTest",
            "azureStorageAccounts": {},
            "scmType": "None",
            "use32BitWorkerProcess": true,
            "webSocketsEnabled": false,
            "alwaysOn": false,
            "managedPipelineMode": "Integrated",
            "virtualApplications": [
                {
                    "virtualPath": "/",
                    "physicalPath": "site\\wwwroot",
                    "preloadEnabled": false
                }
            ],
            "loadBalancing": "LeastRequests",
            "experiments": {
                "rampUpRules": []
            },
            "autoHealEnabled": false,
            "localMySqlEnabled": false,
            "ipSecurityRestrictions": [
                {
                    "ipAddress": "Any",
                    "action": "Allow",
                    "priority": 1,
                    "name": "Allow all",
                    "description": "Allow all access"
                }
            ],
            "scmIpSecurityRestrictions": [
                {
                    "ipAddress": "Any",
                    "action": "Allow",
                    "priority": 1,
                    "name": "Allow all",
                    "description": "Allow all access"
                }
            ],
            "scmIpSecurityRestrictionsUseMain": false,
            "http20Enabled": false,
            "minTlsVersion": "1.2",
            "ftpsState": "AllAllowed",
            "reservedInstanceCount": 0
        }
    },
    {
        "type": "Microsoft.Web/sites/hostNameBindings",
        "apiVersion": "2018-11-01",
        "name": "[concat(parameters('webAppName'), '/', parameters('webAppName'), '.azurewebsites.net')]",
        "location": "[variables('location')]",
        "dependsOn": [
            "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]"
        ],
        "properties": {
            "siteName": "AdAstraflexSurveyWebAppTest",
            "hostNameType": "Verified"
        }
    },
    //Storage Accounts
    {
        "name": "[parameters('storageAccountName')]",
        "type": "Microsoft.Storage/storageAccounts",
        "apiVersion": "2020-08-01-preview",
        "sku": 
        {
            "name": "Standard_RAGRS",
            "tier": "Standard"
        },
        "kind": "StorageV2",
        "location": "[variables('location')]",
        
        "properties": 
        {
            "minimumTlsVersion": "TLS1_2",
            "allowBlobPublicAccess": true,
            "networkAcls": 
            {
                "bypass": "AzureServices",
                "virtualNetworkRules": [],
                "ipRules": [],
                "defaultAction": "Allow"
            },
            "supportsHttpsTrafficOnly": true,
            "encryption": 
            {
                "services": 
                {
                    "file": 
                    {
                        "keyType": "Account",
                        "enabled": true
                    },
                    "blob": 
                    {
                        "keyType": "Account",
                        "enabled": true
                    }
                },
                "keySource": "Microsoft.Storage"
            },
            "accessTier": "Hot"
        }
    }
]
}

введите описание изображения здесь

person Nancy Xiong    schedule 01.02.2021

Можно ли создать план обслуживания, службу приложений и учетную запись хранения в одной группе ресурсов с помощью шаблона ARM?

Да, можно так:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "subscriptionId": {
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "alwaysOn": {
            "type": "bool"
        },
        "storageAccountName": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "workerSizeId": {
            "type": "string"
        },
        "numberOfWorkers": {
            "type": "string"
        },
        "currentStack": {
            "type": "string"
        },
        "phpVersion": {
            "type": "string"
        },
        "errorLink": {
            "type": "string"
        }
    },
    "resources": [
        {
            "apiVersion": "2018-11-01",
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "location": "[parameters('location')]",
            "tags": null,
            "dependsOn": [
                "microsoft.insights/components/yourappname",
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
            ],
            "properties": {
                "name": "[parameters('name')]",
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                            "value": "[reference('microsoft.insights/components/y', '2015-05-01').InstrumentationKey]"
                        },
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/yourappname', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "AzureWebJobsStorage",
                            "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        },
                        {
                            "name": "XDT_MicrosoftApplicationInsights_Mode",
                            "value": "default"
                        },
                        {
                            "name": "ANCM_ADDITIONAL_ERROR_PAGE_LINK",
                            "value": "[parameters('errorLink')]"
                        }
                    ],
                    "metadata": [
                        {
                            "name": "CURRENT_STACK",
                            "value": "[parameters('currentStack')]"
                        }
                    ],
                    "phpVersion": "[parameters('phpVersion')]",
                    "alwaysOn": "[parameters('alwaysOn')]"
                },
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "clientAffinityEnabled": true
            }
        },
        {
            "apiVersion": "2018-11-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "kind": "",
            "tags": null,
            "dependsOn": [],
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSize": "[parameters('workerSize')]",
                "workerSizeId": "[parameters('workerSizeId')]",
                "numberOfWorkers": "[parameters('numberOfWorkers')]"
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2020-02-02-preview",
            "name": "yourappname",
            "type": "microsoft.insights/components",
            "location": "centralus",
            "tags": null,
            "dependsOn": [],
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate",
                "Flow_Type": "Redfield",
                "Application_Type": "web",
                "WorkspaceResourceId": "/subscriptions/e5b0fcfa-e859-43f3-8d84-5e5fe29f4c68/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-e5b0fcfa-e859-43f3-8d84-5e5fe29f4c68-eus"
            }
        },
        {
            "apiVersion": "2019-06-01",
            "type": "Microsoft.Storage/storageAccounts",
            "name": "[parameters('storageAccountName')]",
            "location": "[parameters('location')]",
            "tags": {},
            "sku": {
                "name": "Standard_LRS"
            },
            "properties": {
                "supportsHttpsTrafficOnly": true,
                "minimumTlsVersion": "TLS1_2"
            }
        }
    ]

}

При публикации шаблона ARM укажите параметр:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "subscriptionId": {
      "value": "e5b0fcfa-e859-43f3-8d84-5e5fe29f4c68"
    },
    "name": {
      "value": "yourappname"
    },
    "location": {
      "value": "Central US"
    },
    "hostingPlanName": {
      "value": "yourplanname"
    },
    "serverFarmResourceGroup": {
      "value": "yourgroupname"
    },
    "alwaysOn": {
      "value": true
    },
    "storageAccountName": {
      "value": "yourstoragename"
    },
    "sku": {
      "value": "Standard"
    },
    "skuCode": {
      "value": "S1"
    },
    "workerSize": {
      "value": "0"
    },
    "workerSizeId": {
      "value": "0"
    },
    "numberOfWorkers": {
      "value": "1"
    },
    "currentStack": {
      "value": "dotnetcore"
    },
    "phpVersion": {
      "value": "OFF"
    },
    "errorLink": {
      "value": "https://yourappname.scm.azurewebsites.net/detectors?type=tools&name=eventviewer"
    }
  }
}

Между прочим, ваш шаблон отлично работает на моей стороне, но, пожалуйста, убедитесь, что вы не добавляете комментарий типа //xxx в свой шаблон. :)

person Bowman Zhu    schedule 01.02.2021

Я удаляю учетную запись хранения, которая была у меня в других группах служб, и мой сценарий работает нормально. но я не понимаю, в чем проблема.

person Alejandro Gonzalez    schedule 02.02.2021