Конфигурация службы приложений для шаблонов ARM - состояние гонки / несогласованное поведение

Используя приведенный ниже шаблон ARM, мы включили диагностические настройки для нашей службы приложений, а также определили конфигурацию appSettings в элементе resources. Проблема в том, что периодически после развертывания нашей службы приложений из шаблона appSettings не назначаются, а параметры диагностики.

Может ли кто-нибудь подсказать нам, есть ли лучший способ определить конфигурацию для logs и appSettings для службы приложений, которая обеспечивает более согласованный вывод сайта? Мы ежедневно создаем и разрушаем десятки сервисов приложений для PR-сборки, так что это очень очевидно.

AppSetting WEBSITE_LOAD_USER_PROFILE будет просто случайно удален при создании службы приложения. Нам не хватает dependsOn или нам нужно обновить apiVersion?

ServerFarm с настройками приложения + конфигурация журнала

{
    "$schema": "http://schema.management.azure.com/schemas/2018-05-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "siteName": {
            "type": "string"
        },
        "siteHostingPlanName": {
            "type": "string"
        },
        "resourceLocation": {
            "type": "string"
        }
    },
    "resources": [  
        {
            "apiVersion": "2016-09-01",
            "name": "[parameters('siteHostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('resourceLocation')]",
            "properties": {
                "name": "[parameters('siteHostingPlanName')]"
            },
            "sku": {
                "name": "P2V2",
                "tier": "PremiumV2",
                "capacity": 2
            }
        },
        {
            "apiVersion": "2014-11-01",
            "name": "[parameters('siteName')]",
            "type": "Microsoft.Web/sites",
            "location": "[parameters('resourceLocation')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/serverfarms', parameters('siteHostingPlanName'))]"
            ],
            "properties": {
                "name": "[parameters('siteName')]",
                "serverFarm": "[parameters('siteHostingPlanName')]",
                "siteConfig": {
                    "AlwaysOn": true,
                    "webSocketsEnabled": true,
                    "http20Enabled": true,
                    "requestTracingEnabled": true,
                    "requestTracingExpirationTime": "9999-12-31T23:59:00Z",                    
                    "httpLoggingEnabled": true,
                    "logsDirectorySizeLimit": 100,
                    "detailedErrorLoggingEnabled": true
                }
            },
            "resources": [
                {
                    "apiVersion": "2014-11-01",
                    "name": "appsettings",
                    "type": "config",
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]"
                    ],
                    "properties": {
                        "WEBSITE_LOAD_USER_PROFILE": 1
                    }
                },
                {
                    "apiVersion": "2014-11-01",
                    "name": "logs",
                    "type": "config",
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]"
                    ],
                    "properties": {
                        "applicationLogs": {
                            "fileSystem": {
                              "level": "Verbose"
                            }
                          },
                          "httpLogs": {
                            "fileSystem": {
                              "retentionInMb": 100,
                              "enabled": true
                            }
                          },
                          "failedRequestsTracing": {
                            "enabled": true
                          },
                          "detailedErrorMessages": {
                            "enabled": true
                          }
                    }
                }       
            ]
        }
    ]
}

person SliverNinja - MSFT    schedule 26.10.2018    source источник


Ответы (1)


Вместо того, чтобы определять параметры в отдельном ресурсе, вы должны настроить параметры приложения вместе с functionApp Resource. Я использовал это и определил различные настройки приложения, и он отлично работает. Попробуйте, как в примере ниже.

{
      "apiVersion": "[variables('sitesApiVersion')]",
      "type": "Microsoft.Web/sites",
      "kind": "functionapp",
      "location": "[resourceGroup().location]",
      "name": "[parameters('functionAppName')]",
      "scale": null,
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('functionApp_appServicePlanName'))]",
        "siteConfig": {
          "appSettings": [
            {
              "name": "WEBSITE_LOAD_USER_PROFILE",
              "value": "1"
            }
           ]
        },
        "dependsOn": [
          "[resourceId('Microsoft.Web/serverfarms', parameters('functionApp_appServicePlanName'))]",
          "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
        ]
      }
    }
person HariHaran    schedule 29.10.2018