【发布时间】:2018-01-03 17:58:15
【问题描述】:
如何在不覆盖现有应用设置的情况下使用 ARM 模板将粘性设置部署到 Azure Web 应用中的生产应用槽?
我正在使用 Azure ARM 模板来部署我的环境和代码版本。该环境同时具有暂存槽和生产槽。部署的一部分是部署 AppSettings。我们部署到 Staging、测试,然后交换到 prod。
直到现在,当我需要部署一个粘性 AppSetting 到 prod 时,这个系统一直运行良好。通常,部署是增量的,但是当我尝试为生产创建粘性设置时,所有其他设置都会被清除。
我正在使用 slotconfignames 来指定 prod 插槽中的粘性变量
{
"apiVersion": "2015-08-01",
"name": "slotconfignames",
"type": "config",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', variables('webSiteName'))]"
],
"properties": {
"appSettingNames": [ "WEBSITE_LOCAL_CACHE_OPTION", "WEBSITE_LOCAL_CACHE_SIZEINMB" ]
}
}
我尝试为 prod appsettings 和 stage appsettings 创建单独的资源 - 当我这样做时,prod slot appsettings 将被完全覆盖。这是意料之中的:
{
"apiVersion": "2015-08-01",
"type": "config",
"name": "appsettings",
"dependsOn": [
"[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]"
],
"properties": {
"WEBSITE_LOCAL_CACHE_OPTION": "Always",
"WEBSITE_LOCAL_CACHE_SIZEINMB": "2000"
}
},
如果我将这些设置作为阶段槽设置的一部分进行,那么它们不会在 prod 上设置,而是在阶段槽上设置为粘性。
{
"name": "appsettings",
"type": "config",
"apiVersion": "2015-08-01",
"dependsOn": [
"[variables('stagingSlotName')]",
//"[concat('Microsoft.Web/sites/', variables('webSiteName'))]",
"MSDeploy",
"[concat('Microsoft.Resources/deployments/', 'AppStorage')]"
],
"tags": {
"displayName": "uisettings",
"environment": "[parameters('environmentName')]",
"serviceGroup": "[variables('serviceGroupName')]"
},
"properties": {
...othersettingshere...
"WEBSITE_LOCAL_CACHE_OPTION": "Always",
"WEBSITE_LOCAL_CACHE_SIZEINMB": "2000"
}
},
【问题讨论】:
标签: azure deployment azure-web-app-service azure-resource-manager