【问题标题】:Azure ignores site config settings in ARM templateAzure 忽略 ARM 模板中的站点配置设置
【发布时间】:2016-04-25 08:41:56
【问题描述】:

我正在尝试开发用于部署多个 web 应用程序的 ARM 模板,但我无法使用 Microsoft.Web/sites/config 中提供的设置来配置 web 应用程序。无论我放在那里,当我部署 web 应用程序时,这些设置都会被忽略。我的模板基于David Ebbos example

这是我目前正在尝试的:

// Serverfarm (appservice)
{
    "apiVersion": "2015-08-01",
    "type": "Microsoft.Web/serverfarms",
    "sku": {
        "name": "B1",
        "tier": "Standard",
        "size": "B1",
        "family": "B",
        "capacity": 1
    },
    "name": "[variables('appSvcName')]",
    "location": "[resourceGroup().location]",
    "tags": {
        "project": "[[variables('webAppName')]]"
    },
    "properties": {
        "name": "[variables('appSvcName')]",
        "numberOfWorkers": 1
    }
},
// Site (Webapp)
{
    "apiVersion": "2015-08-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('webAppName')]",
    "location": "[resourceGroup().location]",
    "tags": {
        "project": "[[variables('webAppName')]]"
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appSvcName'))]"
    ],
    "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appSvcName'))]",
        "hostNames": [
            "[concat(variables('webAppName'), '.azurewebsites.net')]"
        ],
        "enabledHostNames": [
            "[concat(variables('webAppName'), '.azurewebsites.net')]",
            "[concat(variables('webAppName'), '.scm.azurewebsites.net')]"
        ],
        // TODO : These resources are ignored so far
        "resources": [
            {
                "apiVersion": "2015-08-01",
                "name": "web",
                "type": "Microsoft.Web/sites/config",
                "location": "[resourceGroup().location]",
                "dependsOn": [
                    "[resourceId('Microsoft.Web/Sites', variables('webAppName'))]"
                ],
                "properties": {
                    "phpVersion": "",
                    "netFrameworkVersion": "v4.6",
                    "use32BitWorkerProcess": false, /* 64-bit platform */
                    "webSocketsEnabled": true,
                    "alwaysOn": true,
                    "requestTracingEnabled": true, /* Failed request tracing, aka 'freb' */
                    "httpLoggingEnabled": true, /* IIS logs (aka Web server logging) */
                    "logsDirectorySizeLimit": 40, /* 40 MB limit for IIS logs */
                    "detailedErrorLoggingEnabled": true, /* Detailed error messages  */
                    "remoteDebuggingEnabled": false,
                    "remoteDebuggingVersion": "VS2015",
                    "defaultDocuments": [
                        "default.aspx",
                        "Default.htm",
                        "Default.html",
                        "index.html",
                        "hostingstart.html"
                    ]
                }
            },
            {
                "apiVersion": "2015-08-01",
                "name": "connectionstrings",
                "type": "Microsoft.Web/sites/config",
                "location": "[resourceGroup().location]",
                "dependsOn": [
                    "[resourceId('Microsoft.Web/Sites', variables('webAppName'))]"
                ],
                "properties": {
                    "umbracoDbDsn": {
                        "value": "[concat('Data Source=tcp:', reference(concat('Microsoft.Sql/servers/', variables('sqlServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', variables('sqlDbName'), ';User Id=', variables('appSvcName'), '@', variables('sqlServerName'), ';Password=e15cO1PtIR5dtq3zUlwK;')]",
                        "type": "SQLAzure"
                    }
                }
            }
        ]
    }
}

我有点困惑的是,当我在我的 azure powershell 控制台中运行 (Get-AzureRmResourceProvider -ProviderNamespace Microsoft.Web).ResourceTypes 时,没有可用的站点/配置 ResourceTypeName。

什么给了?配置资源类型是否已从模板定义中删除?我使用了错误的 apiVersion 吗?我尝试了许多不同的组合,但无济于事。

【问题讨论】:

  • 为什么将“资源”放在“属性”中?它应该在“属性”之外并在您的网络应用程序下。
  • 我没有注意到 @JackZeng 感谢您发现它。

标签: azure arm-template


【解决方案1】:

请参阅此博客 - http://wp.sjkp.dk/arm-templates-set-always-on-and-other-site-properties/

您需要 web/config 的 resource.properties 下的 siteConfig 对象。

{
    "apiVersion": "2015-08-01",
    "name": "[parameters('webSiteName')]",
    "type": "Microsoft.Web/sites",
    "location": "[resourceGroup().location]",
    "tags": {
        "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource",
        "displayName": "Website"
    },
    "dependsOn": [
        "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
    ],
    "properties": {
        "name": "[parameters('webSiteName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
    },
    "resources": [
        {
            "apiVersion": "2015-08-01",
            "name": "web",
            "type": "config",
            "dependsOn": [
                "[concat('Microsoft.Web/sites/', parameters('webSiteName'))]"
            ],
            "properties": {
                "javaVersion": "1.8",
                "javaContainer": "TOMCAT",
                "javaContainerVersion": "8.0",
                "siteConfig": {
                    "<supported-property>": "<value>",
                }
            }
        }
    ]
}

【讨论】:

    【解决方案2】:

    架构中的错误,由@JackZheng 评论。 Test-AzureRmResourceGroupDeployment 命令也没有报告这些错误,这使得查找和更正变得有些困难。

    【讨论】:

      【解决方案3】:

      可以在resources->properties->SiteConfig下使用APP设置如下图

       "siteConfig": {
                  "appSettings": [
                      {
                          "name": "AppSetting1",
                          "value": "Value1"
                      }
                  ]
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-20
        • 2015-08-31
        • 1970-01-01
        • 1970-01-01
        • 2021-09-09
        相关资源
        最近更新 更多