2017-08-24 63 views
4

使用常规msdeploy(又名WebDeploy,用于Visual Studio或VSTS发布)部署到Azure Web App(又名Azure App Service)时,可以选择不是删除目标上的现有文件。通过ARM/msdeploy部署到Azure Web App而不删除现有文件

但是,当使用ARM提供程序(例如,通过ARM模板)时,默认情况下始终删除现有文件。有没有办法来覆盖这个,而不是吹走现有的文件?

回答

4

Azure Web App支持DoNotDeleteRule的方式是通过addOnPackages架构元素。

addOnPackages隐式使用DoNotDelete规则。因此,如果您想要在不删除现有站点中的文件的情况下应用程序包,请在addOnPackages数组中指定它,然后不会在中定义外部MSDeploy对象中的任何内容。例如: -

{ 
    "properties": { 
     "parameters": { 
      "appName": { 
       "value": "mysite" 
      }, 
      "location":{ 
       "value": "USAAnywhere" 
      } 
     }, 
     "template": { 
      "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
      "contentVersion": "1.0.0-r188+188.764a8a7798ecc6ebb752343c6f8e6be2903ba711", 
      "parameters": { 
       "appName": { 
        "type": "string" 
       }, 
       "location": { 
        "type": "string" 
       } 
      }, 
      "resources": [ 
       { 
        "apiVersion": "2016-08-01", 
        "name": "[parameters('appName')]", 
        "location": "[parameters('location')]", 
        "type": "Microsoft.Web/sites", 
        "resources": [ 
         { 
          "apiVersion": "2016-08-01", 
          "name": "MSDeploy", 
          "type": "Extensions", 
          "dependsOn": [ 
           "[concat('Microsoft.Web/Sites/', parameters('appName'))]" 
          ], 
          "properties": { 
           "addOnPackages" : [ 
            { 
             "packageUri": "https://mystorageblob.blob.core.windows.net/package/my_webdeploy_package.zip", 
             "AppOffline": true, 
             "setParameters": { 
              "IIS Web Application Name": "[parameters('appName')]", 
             } 
            } 
           ] 
          } 
         } 
        ], 
        "properties" : {} 
       } 
      ] 
     }, 
     "mode": "Incremental" 
    } 
} 

addOnPackages还允许在单一MSDeploy ARM模板多个包;外部的将删除现有网站的文件,并且addOnPackages是附加的,并且不会删除外部包。例如:

{ 
    "properties": { 
     "parameters": { 
      "appName": { 
       "value": "mysite" 
      }, 
      "location":{ 
       "value": "USAAnywhere" 
      } 
     }, 
     "template": { 
      "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
      "contentVersion": "1.0.0-r188+188.764a8a7798ecc6ebb752343c6f8e6be2903ba711", 
      "parameters": { 
       "appName": { 
        "type": "string" 
       }, 
       "location": { 
        "type": "string" 
       } 
      }, 
      "resources": [ 
       { 
        "apiVersion": "2016-08-01", 
        "name": "[parameters('appName')]", 
        "location": "[parameters('location')]", 
        "type": "Microsoft.Web/sites", 
        "resources": [ 
         { 
          "apiVersion": "2016-08-01", 
          "name": "MSDeploy", 
          "type": "Extensions", 
          "dependsOn": [ 
           "[concat('Microsoft.Web/Sites/', parameters('appName'))]" 
          ], 
          "properties": { 
           "packageUri": "https://mystorageblob.blob.core.windows.net/package/my_webdeploy_package.zip", 
           "dbType": "None", 
           "connectionString": "", 
           "AppOffline": true, 
           "SkipAppData": true, 
           "setParameters": { 
            "IIS Web Application Name": "[parameters('appName')]" 
           }, 
           "addOnPackages" : [ 
            { 
             "packageUri": "https://mystorageblob.blob.core.windows.net/package/my_first_add_on_package.zip", 
             "AppOffline": true, 
             "setParameters": { 
              "IIS Web Application Name": "[parameters('appName')]", 
             } 
            }, 
            { 
             "packageUri": "https://mystorageblob.blob.core.windows.net/package/my_second_add_on_package.zip", 
             "setParameters": { 
              "IIS Web Application Name": "[parameters('appName')]", 
             } 
            } 
           ] 
          } 
         } 
        ], 
        "properties" : {} 
       } 
      ] 
     }, 
     "mode": "Incremental" 
    } 
} 
+0

AppOffline和SkipAppData参数是什么意思? – juvchan

+0

@juvchan:''appOffline“:true'等同于msdeploy -enableRule:AppOffline命令行选项。它默认为'false'(关闭)。 ''skipAppData“:true'等同于msdeploy -skip:objectname ='dirPath',absolutepath = App_Data'。 – DropPhone

相关问题