【问题标题】:ARM Template containing config settings for web app包含 Web 应用程序配置设置的 ARM 模板
【发布时间】:2017-08-07 10:45:02
【问题描述】:

我在部署 ARM 模板时遇到了奇怪的行为。

我有以下模板:(请注意,sasUrl 值 'xxx' 在我的文件中有一个真实的工作值)

{
  "name": "[variables('webAppServiceName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "apiVersion": "2016-08-01",
  "dependsOn": [
    "[concat('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
  ],
  "tags": {
    "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]": "Resource",
    "displayName": "[variables('webAppServiceName')]"
  },
  "properties": {
    "name": "[variables('webAppServiceName')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
  },
  "resources": [
    {
      "apiVersion": "2014-11-01",
      "name": "appsettings",
      "type": "config",
      "dependsOn": [
        "[concat('Microsoft.Web/sites/', variables('webAppServiceName'))]",
        "[concat('Microsoft.Web/certificates/', variables('certificateName'))]"
      ],
      "tags": {
        "displayName": "WebAppSettings"
      },
      "properties": {
        "WEBSITE_LOAD_CERTIFICATES": "[reference(resourceId('Microsoft.Web/certificates', variables('certificateName')), providers('Microsoft.Web', 'certificates').apiVersions[0]).thumbprint]"
      }
    },
    {
      "apiVersion": "2016-08-01",
      "name": "Microsoft.ApplicationInsights.Profiler.AzureWebApps",
      "type": "siteextensions",
      "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', variables('webAppServiceName'))]"
      ],
      "properties": {}
    },
    {
      "apiVersion": "2015-08-01",
      "name": "logs",
      "type": "config",
      "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', variables('webAppServiceName'))]"
      ],
      "properties": {
        "applicationLogs": {
          "fileSystem": {
            "level": "Off"
          },
          "azureTableStorage": {
            "level": "Off"
          },
          "azureBlobStorage": {
            "level": "[parameters('applicationLogLevel')]",
            "sasUrl": "xxx"
          }
        },
        "httpLogs": {
          "fileSystem": {
            "enabled": false
          },
          "azureBlobStorage": {
            "enabled": true,
            "sasUrl": "xxx"
          }
        },
        "failedRequestsTracing": {
          "enabled": "[parameters('enableFailedRequestTracing')]"
        },
        "detailedErrorMessages": {
          "enabled": "[parameters('enableDetailedErrorMessages')]"
        }
      }
    }
  ]
}

在不修改任何内容的情况下部署此模板时,配置部分“日志”未正确部署 +- 2 次。我刚刚再次测试了 ARM 模板,第一次部署时,Web 应用程序的诊断日志记录设置不正确。第二次都没有,但第三次他们还好。但第四次,设置不再正确。看起来模板的这一部分没有一致的行为。

我在监督什么吗?

【问题讨论】:

  • 你有关于这个线程的任何更新吗?如果有用,请帮忙标记为答案,以帮助更多有相同问题的社区?
  • 我仍然没有一致的结果,但是 Azure 支持团队已经记录了支持票,他们正在处理它。

标签: azure azure-blob-storage azure-web-app-service azure-diagnostics


【解决方案1】:

我尝试使用 appsetting 和日志创建 WebApp,它对我来说可以正常工作。我使用 Visual Studio 创建了项目。以下是我的详细步骤。

1.创建 Azure 资源项目

2.选择WebApp模板

3.点击部署文件,然后右键删除不需要的资源

4.为WebApp添加Appsetting资源

5.为 Azure WebApp 添加日志代码

{
          "apiVersion": "2015-08-01",
          "name": "logs",
          "type": "config",
          "dependsOn": [
            "[resourceId('Microsoft.Web/Sites', variables('webSiteName'))]"
          ],
          "properties": {
            "applicationLogs": {
              "fileSystem": {
                "level": "Off"
              },
              "azureTableStorage": {
                "level": "Off"
              },
              "azureBlobStorage": {
                "level": "[variables('Level')]",
                "sasUrl": "xxxx"
              }
            },
            "httpLogs": {
              "fileSystem": {
                "enabled": false
              },
              "azureBlobStorage": {
                "enabled": true,
                "sasUrl": "xxxxxx"
              }
            },
            "failedRequestsTracing": {
              "enabled": "[parameters('enableFailedRequestTracing')]"
            },
            "detailedErrorMessages": {
              "enabled": "[parameters('enableDetailedErrorMessages')]"
            }
          }
        }

6.右键项目,选择部署

7.检查输出和 Azure 门户的结果

整个手臂模板:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "hostingPlanName": {
      "type": "string",
      "minLength": 1
    },
    "enableFailedRequestTracing": {
      "type": "bool"
    },
    "enableDetailedErrorMessages": {
      "type": "bool"
    },
    "skuName": {
      "type": "string",
      "defaultValue": "F1",
      "allowedValues": [
        "F1",
        "D1",
        "B1",
        "B2",
        "B3",
        "S1",
        "S2",
        "S3",
        "P1",
        "P2",
        "P3",
        "P4"
      ],
      "metadata": {
        "description": "Describes plan's pricing tier and capacity. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/"
      }
    },
    "skuCapacity": {
      "type": "int",
      "defaultValue": 1,
      "minValue": 1,
      "metadata": {
        "description": "Describes plan's instance count"
      }
    }
  },
  "variables": {
    "webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]",
    "Level": "Error"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "name": "[parameters('hostingPlanName')]",
      "type": "Microsoft.Web/serverfarms",
      "location": "[resourceGroup().location]",
      "tags": {
        "displayName": "HostingPlan"
      },
      "sku": {
        "name": "[parameters('skuName')]",
        "capacity": "[parameters('skuCapacity')]"
      },
      "properties": {
        "name": "[parameters('hostingPlanName')]"
      }
    },
    {
      "apiVersion": "2015-08-01",
      "name": "[variables('webSiteName')]",
      "type": "Microsoft.Web/sites",
      "location": "[resourceGroup().location]",
      "tags": {
        "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource",
        "displayName": "Website"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
      ],
      "properties": {
        "name": "[variables('webSiteName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
      },
      "resources": [
        {
          "name": "appsettings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "appsettings"
          },
          "properties": {
            "key1": "value1",
            "key2": "value2"
          }
        },
        {
          "apiVersion": "2015-08-01",
          "name": "logs",
          "type": "config",
          "dependsOn": [
            "[resourceId('Microsoft.Web/Sites', variables('webSiteName'))]"
          ],
          "properties": {
            "applicationLogs": {
              "fileSystem": {
                "level": "Off"
              },
              "azureTableStorage": {
                "level": "Off"
              },
              "azureBlobStorage": {
                "level": "[variables('Level')]",
                "sasUrl": "xxxxx"
              }
            },
            "httpLogs": {
              "fileSystem": {
                "enabled": false
              },
              "azureBlobStorage": {
                "enabled": true,
                "sasUrl": "xxxx"
              }
            },
            "failedRequestsTracing": {
              "enabled": "[parameters('enableFailedRequestTracing')]"
            },
            "detailedErrorMessages": {
              "enabled": "[parameters('enableDetailedErrorMessages')]"
            }
          }
        }
      ]
    }

  ]
 }

【讨论】:

  • 感谢您的回复。多次重新部署模板时是否得到一致的结果?有时它确实对我有用,有时它在使用完全相同的模板和参数文件时错误配置了日志设置。
  • @TomSun-MSFT 在这个示例中他们提到了 sasurl:"xxx"。创建存储账户后如何使用ARM模板获取sasurl?
  • 我在示例中使用了现有的存储帐户
  • @TomSun-MSFT 感谢您的回复。你知道在 ARM 模板中获取 sasurl 吗?是否可以进入ARM模板?
  • 根据我的经验,我没有办法做到这一点。我还找到了feedback。发布问题而不是评论 SO 的好方法。
【解决方案2】:

我也遇到过类似的问题。我们使用 dependsOn 规则解决了这个问题。 您应该添加 dependsOn 规则来拆分每个配置部分的处理。 似乎否则可能会出现问题,例如...缺少设置。

手臂 sn-p:

{
    "name": "[variables('ExampleAppName')]",
    "type": "Microsoft.Web/sites",
    "location": "[resourceGroup().location]",
    "apiVersion": "2015-08-01",
    "kind": "api",
    "dependsOn": ["[resourceId('Microsoft.Web/serverfarms', variables('applicationPlanName'))]"],
    "tags": {
        "displayName": "Example App"
    },
    "properties": {
        "name": "[variables('ExampleAppName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms/', variables('applicationPlanName'))]",
        "clientAffinityEnabled": "false"
    },
    "resources": [{
        "name": "web",
        "type": "config",
        "apiVersion": "2015-08-01",
        "dependsOn": ["[resourceId('Microsoft.Web/sites', variables('ExampleAppName'))]"],
        "tags": {
            "displayName": "webconfig Example App"
        },
        "properties": {
            "alwaysOn": "true"
        }
    },
    {
        "apiVersion": "2015-08-01",
        "name": "appsettings",
        "type": "config",
        "dependsOn": ["[resourceId('Microsoft.Web/sites', variables('ExampleAppName'))]",
        "[resourceId('Microsoft.Web/sites/config', variables('ExampleAppName'), 'web')]"],
        "tags": {
            "displayName": "appsettings Example App"
        },
        "properties": {
            "EXAMPLE1": "[parameters('EXAMPLE1')]",
            "EXAMPLE2": "[parameters('EXAMPLE2')]"
        }
    },
    {
        "name": "logs",
        "type": "config",
        "apiVersion": "2015-08-01",
        "dependsOn": ["[concat('Microsoft.Web/sites/', variables('ExampleAppName'))]",
        "[resourceId('Microsoft.Web/sites/config', variables('ExampleAppName'), 'appsettings')]"],
        "tags": {
            "displayName": "logs Example App"
        },
        "properties": {
            "applicationLogs": {
                "fileSystem": {
                    "level": "Warning"
                }
            },
            "httpLogs": {
                "fileSystem": {
                    "retentionInMb": "35",
                    "enabled": true
                }
            },
            "detailedErrorMessages": {
                "enabled": false
            }
        }
    }]
}

更多信息,你可以阅读我的帖子: 点击here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多