Шаблон Azure ARM - настройка параметров приложения и настроек журнала диагностики - PullRequest
0 голосов
/ 31 мая 2019

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

{

            "type": "Microsoft.Web/sites",
            "name": "[parameters('azureWebsiteName')]",
            "apiVersion": "[variables('appServiceApiVersion')]",
            "location": "[variables('location')]",
            "tags": {
                "Solution": "[parameters('solutionType')]",
                "Sku": "[parameters('solutionSku')]"
            },
            "properties": {
                "enabled": true,
                "clientAffinityEnabled": false,
                "serverFarmId": "[variables('hostingPlanName')]",
                "siteConfig": {
                    "alwaysOn": true,
                    "siteAuthEnabled": true,
                    "siteAuthSettings": {
                        "clientId": "[parameters('aadClientId')]",
                        "clientSecret": "[parameters('aadClientSecret')]",
                        "unauthenticatedClientAction": "[parameters('apiSiteUnauthenticatedClientAction')]",
                        "defaultProvider": "[parameters('apiSiteDefaultProvider')]",
                        "allowedAudiences": [
                            "[parameters('aadAppIdUri')]"
                        ]
                    },
                    "appSettings": [ ]
                }
            },
            "identity": {
                "type": "SystemAssigned"
            },
            "dependsOn": [
                "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
            ],
            "resources": [
                {
                    "type": "config",
                    "name": "appsettings",
                    "apiVersion": "[variables('appServiceApiVersion')]",
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/sites/', parameters('azureWebsiteName'))]",
                        "[resourceId('Microsoft.Web/sites/config/', parameters('azureWebsiteName'), 'logs')]",
                        "[resourceId('microsoft.insights/components/', parameters('appInsightsName'))]",
                        "Microsoft.ApplicationInsights.AzureWebSites",
                        "[resourceId('Microsoft.KeyVault/vaults/', parameters('keyVaultName'))]",
                        "[resourceId('Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), variables('storageAccountConnectionString'))]",
                        "[resourceId('Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), variables('documentDBAccessKey'))]"
                    ],
                    "properties": {
                        "AzureWebJobsStorage": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('storageAccountConnectionString')).secretUriWithVersion, ')')]"
                }
                },
                {
                    "type": "config",
                    "name": "logs",
                    "apiVersion": "[variables('appServiceApiVersion')]",
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/sites/', parameters('azureWebsiteName'))]",
                        "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageName'))]",
                        "[concat('Microsoft.Storage/storageAccounts/', parameters('storageName'), '/blobServices/default/containers/', variables('appLogsContainerName'))]",
                        "[concat('Microsoft.Storage/storageAccounts/', parameters('storageName'), '/blobServices/default/containers/', variables('webServerLogsContainerName'))]"
                    ],
                    "properties": {
                        "httpLogs": {
                            "azureBlobStorage": {
                                "sasUrl": "[concat('https://',parameters('storageName'),'.blob.core.windows.net/',variables('webServerLogsContainerName'),'?',listServiceSas(parameters('storageName'), '2018-11-01', variables('webServerLogsSasProperties')).serviceSasToken)]",
                                "retentionInDays": "[parameters('diagnosticsLogsRetentionInDays')]",
                                "enabled": true
                            }
                        },
                        "failedRequestsTracing": {
                            "enabled": true
                        },
                        "detailedErrorMessages": {
                            "enabled": true
                        }
                    }
                },
                {
                    "type": "siteextensions",
                    "name": "Microsoft.ApplicationInsights.AzureWebSites",
                    "apiVersion": "[variables('appServiceApiVersion')]",
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('azureWebsiteName'))]"
                    ],
                    "properties": {}
                }
            ]
        }

Проблема заключается в том, что при развертывании этого параметра конфигурация журналов устанавливается временноустановить затем как-то становится не установленным.Я полагаю, что это как-то связано с несколькими объектами конфигурации (один для настроек приложения и один для журналов). F Я должен был удалить конфигурацию приложений, журналы были правильно установлены и остаются установленными.

Может кто-топомогите мне понять что происходит?Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Разобрался.Мне нужно было добавить в логах зависимость от настроек приложения.

"dependsOn": [
...
"[resourceId('Microsoft.Web/sites/config/', parameters('azureWebsiteName'), 'appsettings')]"
...
]

Так что конфигурация логов будет выглядеть как

        {
            "type": "config",
            "name": "logs",
            "apiVersion": "[variables('appServiceApiVersion')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites/', parameters('azureWebsiteName'))]",
                "[resourceId('Microsoft.Web/sites/config/', parameters('azureWebsiteName'), 'appsettings')]",
                "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageName'))]",
                "[concat('Microsoft.Storage/storageAccounts/', parameters('storageName'), '/blobServices/default/containers/', variables('appLogsContainerName'))]",
                "[concat('Microsoft.Storage/storageAccounts/', parameters('storageName'), '/blobServices/default/containers/', variables('webServerLogsContainerName'))]"
            ],
            "properties": {
                "applicationLogs": {
                    "azureBlobStorage": {
                        "level": "[parameters('diagnosticsLogsLevel')]",
                        "sasUrl": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', parameters('storageName'))).primaryEndpoints.blob, variables('appLogsContainerName'), '?', listAccountSas(parameters('storageName'), variables('storageApiVersion'), variables('listAccountSasRequestContent')).accountSasToken)]",
                        "retentionInDays": "[parameters('diagnosticsLogsRetentionInDays')]"
                    }
                },
                "httpLogs": {
                    "azureBlobStorage": {
                        "sasUrl": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', parameters('storageName'))).primaryEndpoints.blob, variables('webServerLogsContainerName'), '?', listAccountSas(parameters('storageName'), variables('storageApiVersion'), variables('listAccountSasRequestContent')).accountSasToken)]",
                        "retentionInDays": "[parameters('diagnosticsLogsRetentionInDays')]",
                        "enabled": true
                    }
                },
                "failedRequestsTracing": {
                    "enabled": true
                },
                "detailedErrorMessages": {
                    "enabled": true
                }
            }
        },
0 голосов
/ 31 мая 2019

Просто объедините свойства обоих конфигов в одну сущность и примените эту сущность, и она будет работать.

Это происходит потому, что вы перезаписываете первую запись второй записью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...