Azure资源管理器模板-将dacpac和两个web项目部署到一个web应用程序中
我们正在尝试使用ARM请求并将相当复杂的设置部署到Azure中。 以下是基本组件:Azure资源管理器模板-将dacpac和两个web项目部署到一个web应用程序中,azure,deployment,azure-web-app-service,azure-resource-manager,dacpac,Azure,Deployment,Azure Web App Service,Azure Resource Manager,Dacpac,我们正在尝试使用ARM请求并将相当复杂的设置部署到Azure中。 以下是基本组件: 2个Web项目,应进入一个Web应用程序,一个虚拟应用程序 子目录 使用DACPAC在同一个db服务器上创建两个Sql数据库 (不是bacpac) Azure服务总线 中间件虚拟机 一些其他的东西 我大部分时间都在工作。两个主要部分我似乎不知道该怎么做: 我找不到执行DACPAC部署的模板或方法。我们在一个Sql数据库项目中使用了我们的模式,该项目可以整齐地编译成dacpac格式。我希望能够使用Azure资源
- 2个Web项目,应进入一个Web应用程序,一个虚拟应用程序 子目录
- 使用DACPAC在同一个db服务器上创建两个Sql数据库 (不是bacpac)
- Azure服务总线
- 中间件虚拟机
- 一些其他的东西
{
"name": "[variables('UxWebAppName')]",
"type": "Microsoft.Web/sites",
"location": "[resourceGroup().location]",
"apiVersion": "2015-08-01",
"dependsOn": [
"[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
],
"tags": {
"[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource",
"displayName": "UxWebApp"
},
"properties": {
"name": "[variables('UxWebAppName')]",
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
},
"resources": [
{
"apiVersion": "2015-08-01",
"name": "web",
"type": "config",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', variables('UxWebAppName'))]"
],
"properties": {
"phpVersion": "5.5",
"netFrameworkVersion": "v4.6",
"use32BitWorkerProcess": false, /* 64-bit platform */
"webSocketsEnabled": true,
"alwaysOn": true,
"remoteDebuggingEnabled": false,
"virtualApplications": [
{
"virtualPath": "/",
"physicalPath": "site\\wwwroot"
},
{
"virtualPath": "/api",
"physicalPath": "site\\wwwroot\\api"
}
],
"defaultDocuments": [
"index.html",
"hostingstart.html"
]
}
},
{
"name": "MSDeploy",
"type": "extensions",
"location": "[resourceGroup().location]",
"apiVersion": "2015-08-01",
"dependsOn": [
"[concat('Microsoft.Web/sites/', variables('UxWebAppName'))]"
],
"tags": {
"displayName": "UxDeploy"
},
"properties": {
"packageUri": "[concat(parameters('_artifactsLocation'), '/', parameters('UxDeployPackageFolder'), '/', parameters('UxDeployPackageFileName'), parameters('_artifactsLocationSasToken'))]",
"dbType": "None",
"connectionString": "",
"setParameters": {
"IIS Web Application Name": "[variables('UxWebAppName')]"
}
}
}
我试图添加第二个MSDeploy扩展元素,但这在部署过程中导致了一个错误,称存在重复节点
以下是sql server部分的代码段:
{
"name": "[variables('sqlserverName')]",
"type": "Microsoft.Sql/servers",
"location": "[resourceGroup().location]",
"tags": {
"displayName": "SqlServer"
},
"apiVersion": "2014-04-01-preview",
"properties": {
"administratorLogin": "[parameters('administratorLogin')]",
"administratorLoginPassword": "[parameters('administratorLoginPassword')]"
},
"resources": [
{
"name": "[parameters('coreDatabaseName')]",
"type": "databases",
"location": "[resourceGroup().location]",
"tags": {
"displayName": "CoreDatabase"
},
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[concat('Microsoft.Sql/servers/', variables('sqlserverName'))]"
],
"properties": {
"edition": "[parameters('edition')]",
"collation": "[parameters('collation')]",
"maxSizeBytes": "[parameters('maxSizeBytes')]",
"requestedServiceObjectiveName": "[parameters('requestedServiceObjectiveName')]"
},
"resources": [
{
"name": "Import",
"type": "extensions",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[parameters('coreDatabaseName')]"
],
"tags": {
"displayName": "CoreDb"
},
"properties": {
"storageKeyType": "[parameters('CoreDbStorageKeyType')]",
"storageKey": "[parameters('primaryKey')]",
"storageUri": "[concat(parameters('_artifactsLocation'), '/', parameters('CoreDbStoragePackageFolder'), '/', parameters('CoreDbStoragePackageFileName'))]",
"administratorLogin": "[parameters('administratorLogin')]",
"administratorLoginPassword": "[parameters('administratorLoginPassword')]",
"operationMode": "Import"
}
}
]
},
{
"type": "firewallrules",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[concat('Microsoft.Sql/servers/', variables('sqlserverName'))]"
],
"location": "[resourceGroup().location]",
"name": "AllowAllWindowsAzureIps",
"properties": {
"endIpAddress": "0.0.0.0",
"startIpAddress": "0.0.0.0"
}
}
]
}
这似乎只适用于bacpac文件,而不适用于dacpac。我只是在网上找不到很多有用的信息。我发现可能有几个条目在谈论将dacpac包括在web应用程序项目中,但这种方法对我来说似乎很奇怪。我尝试将operationMode设置为Publish(假设它在后台使用sqlpackage),但它说不支持
有没有人有过使用ARM进行这两种部署的经验?还是我只是第一批尝试这么做的豚鼠之一
我想我可以使用powershell/msbuild deploy(我可以在其中指定虚拟目录等)分别执行dacpac和web应用程序的部署,但就我所知,这有点违背了ARM的目的
任何有用的提示都将不胜感激
编辑我让部署在不使用ARM的情况下工作,并且使用MSBuild的请购部分如下所示:
对于使用publishprofile的web应用程序,很容易
"C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe" ../xx/SomeApp.csproj /p:DeployOnBuild=true /p:PublishProfile=SomeApp.pubxml /p:VisualStudioVersion=12.0 /p:Password=******
对于如下所示的sql部署:
"C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\sqlpackage.exe" /Action:Publish /SourceFile:"U:\bin\Database\Database.dacpac" /TargetConnectionString:"Server=some.database.windows.net,1433;Database=SomeDatabase;User ID=someUser;Password=*******;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" /p:GenerateSmartDefaults=True /p:RegisterDataTierApplication=True /p:BlockWhenDriftDetected=False /p:BlockOnPossibleDataLoss=False
问题纯粹是关于ARM模板部署的。我的意思是,我可以拆分申请(使用ARM)和部署(使用msdeploy或Powershell DSC),但我认为我做得不对,因为部署的某些部分(例如web包)正在工作。
真的只有一半的东西受支持,但有一半(还没有)?让我试着回答我们的一个问题: 我试图找到一种方法,将两个独立的web项目部署到 azure web应用程序,但分为两个不同的虚拟应用程序。我找到了一个 在一个WebDeploy上配置虚拟应用程序路径的方法,但我不能 将第二个项目添加到同一网站节点中 您需要配置您的网站以了解您的虚拟目录。
目前不支持使用Azure模板部署将dacpac部署到Azure数据库
我对ARM一无所知,但如果有帮助的话,可以解释如何通过MSDeploy部署DACPAC。您好,谢谢您的评论。我已经通过使用带有deploy标志的MSBuild进行“手动”部署实现了这一点,如果这是您的意思的话。我可能会在问题中添加这一点来澄清。嘿,谢谢你的评论。是的,我知道这一点。ARM部署模板已经包含了此配置(“virtualApplications”属性)。然而,问题是,我实际上如何告诉模板将哪个web包部署到这些虚拟应用程序目录中,以及如何(使用ARM)?我认为您必须将所有应用程序捆绑到一个应用程序中,并将二进制副本放在两个文件夹中。如果您使用的是持续部署,则可以尝试创建自己的客户部署脚本。