从ARM模板创建Azure web app插槽,而不复制原始web app配置

从ARM模板创建Azure web app插槽,而不复制原始web app配置,azure,azure-web-app-service,azure-resource-manager,arm-template,Azure,Azure Web App Service,Azure Resource Manager,Arm Template,我正在尝试通过ARM模板创建web应用程序插槽 我能够创建它们,但看起来默认行为是将它们创建为当前web应用程序状态的副本。这将导致我的插槽继承应用程序设置、连接字符串、虚拟目录等 这里有一个复制样本,演示了该行为 我希望我的插槽干净、新鲜,这是azure门户的默认行为。门户允许用户通过指定创建插槽时发布的“configSource”:“值来选择行为 在ARM模板中是否也可以实现同样的效果 在ARM模板中是否也可以实现同样的效果 如果我使用你提到的模板,我也可以在我这边复制它。我也找不到通过指定

我正在尝试通过ARM模板创建web应用程序插槽

我能够创建它们,但看起来默认行为是将它们创建为当前web应用程序状态的副本。这将导致我的插槽继承应用程序设置、连接字符串、虚拟目录等

这里有一个复制样本,演示了该行为

我希望我的插槽干净、新鲜,这是azure门户的默认行为。门户允许用户通过指定创建插槽时发布的
“configSource”:“
值来选择行为

在ARM模板中是否也可以实现同样的效果

在ARM模板中是否也可以实现同样的效果

如果我使用你提到的模板,我也可以在我这边复制它。我也找不到通过指定“configSource”来选择行为的方法:“,您可以直接给Azure团队

我通过在部署期间重写配置来解决这个问题。对我来说,它工作正常。您可以使用以下代码替换tempalte中的creating WebApp插槽代码

    {
      "apiVersion": "2015-08-01",
      "name": "maintenance",
      "type": "slots",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', variables('webSiteName'))]"
      ],
      "properties": {
      },
      "resources": [
        {
          "apiVersion": "2015-08-01",
          "type": "config",
          "name": "connectionstrings",
          "location": "East US",
          "dependsOn": [
            "[resourceId('Microsoft.Web/Sites/Slots', variables('webSiteName'), 'maintenance')]"
          ],
          "properties": {}
        },
        {
          "apiVersion": "2015-08-01",
          "type": "config",
          "name": "web",
          "tags": {
            "displayName": "Website configuration"
          },
          "dependsOn": [
            "[resourceId('Microsoft.Web/Sites/Slots', variables('webSiteName'),'maintenance')]"
          ],
          "properties": {
            "virtualApplications": [
              {
                "virtualPath": "/",
                "physicalPath": "site\\wwwroot",
                "preloadEnabled": true,
                "virtualDirectories": null
              }
            ]
          }
        }

      ]

    }

要防止从生产应用程序复制设置,只需在插槽
属性
中添加一个空的
siteConfig
对象。e、 g

    {
      "apiVersion": "2015-08-01",
      "type": "slots",
      "name": "maintenance",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/Sites/', variables('webSiteName'))]"
      ],
      "properties": {
        "siteConfig": { }
      }
    }

我发送了一个示例来说明您的回购。

如果门户具有您想要的行为,是否可以在那里对其进行模拟,然后查看生成的自动化脚本?生成的模板并不明智,它是所有插槽设置的完全转储。如果我这样做,这意味着我必须在每个插槽中复制每个网站配置值。这将是一场噩梦。我正在寻找一种聪明的方法来实现这一点,就像门户网站正在做的那样。感谢您确认您得到了相同的行为。覆盖现有的基本配置是我想要避免的,因为这将很难维护,也无法正确扩展。为什么要在这么简单的情况下寻找复杂的东西:)ARM模板真的需要一个全面的文档才能成为真正高效的解决方案。。。现在,查找有关如何编写模板的信息要比手动或老式powershell管理资源花费更多的时间script@GGirard我同意有些事情比他们应该知道的要困难得多。希望下一个需要它的人会发现这个问题:)