如何使用 Powershell Commandlets 在应用服务环境中创建 Azure WebApp
Posted
技术标签:
【中文标题】如何使用 Powershell Commandlets 在应用服务环境中创建 Azure WebApp【英文标题】:How do I create an Azure WebApp in an App Service Environment using the Powershell Commandlets 【发布时间】:2015-07-29 12:51:59 【问题描述】:我一直在尝试使用 Powershell 命令行开关在应用服务环境中创建 Azure Web 应用
我无法指定我的应用服务环境应该与 New-AzureWebApp 或 New-AzureAppServicePlan 命令行开关一起使用
在 Web 门户中,您将您的应用服务环境指定为位置...但使用 Powershell Commandlet 似乎无法做到这一点(它们会验证该位置是否是有效的“常规”Azure 位置)。
【问题讨论】:
【参考方案1】:回答我自己的问题:
我发现我可以使用 New-AzureResourceGroup commandlet 和自定义 JSON 模板创建一个新的 Web 应用程序。我在库中找不到任何在 ASE 中配置 Web 应用程序的模板,但通过对门户使用的模板进行逆向工程,并从库中修改 Microsoft.WebSite.0.3.17-preview.json 模板,我可以使用以下命令创建 WebApp:
New-AzureResourceGroup -Name $ResourceGroupName -Location "Australia Southeast" -TemplateFile $TemplateFile -siteName $SiteName -hostingPlanName $HostingPlanName -hostingEnvironment $HostingEnvironment -siteLocation "Australia Southeast" -workerSize 0 -sku "Premium"
使用包含以下模板文件路径的 $TemplateFile 变量:
http://pastebin.com/VefC0Dz2
这只是 Gallery 中的 0.3.17 预览模板,有以下修改:
添加hostingEnvironment参数
"parameters":
"hostingEnvironment":
"type": "string",
"defaultValue": ""
,
将 hostingEnvironment 属性添加到 Microsoft.Web/serverfarms 资源:
"resources": [
"apiVersion": "2014-06-01",
"name": "[parameters('hostingPlanName')]",
"type": "Microsoft.Web/serverfarms",
"location": "[parameters('siteLocation')]",
"properties":
"name": "[parameters('hostingPlanName')]",
"sku": "[parameters('sku')]",
"workerSize": "[parameters('workerSize')]",
"hostingEnvironment": "[parameters('hostingEnvironment')]",
"numberOfWorkers": 0
,
"apiVersion": "2014-06-01",
"name": "[parameters('siteName')]",
"type": "Microsoft.Web/sites",
"location": "[parameters('siteLocation')]",
"tags":
"[concat('hidden-related:', '/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "empty"
,
"dependsOn": [
"[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
],
"properties":
"name": "[parameters('siteName')]",
"serverFarm": "[parameters('hostingPlanName')]",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
,
我认为这也可以使用 Add-AzureResource Commandlet 来完成,但我还没有尝试过。
【讨论】:
【参考方案2】:Microsoft 已将 ResourceManager CommandLets 添加到 PowerShell。这允许您执行部署。可以使用以下命令在 powerShell 中创建网站:
New-AzureRmResource -Location "West Europe" -Properties $props
-ResourceName "Site1" -ResourceType "microsoft.web/sites"
-ResourceGroupName "ResourceGrp1" -Force
您需要为属性创建一个对象:
$props = @
HostingEnvironmentId ='/subscriptions/xyz/resourceGroups/ResourceGroup1/providers/Microsoft.Web/hostingEnvironments/ASE1
ServerFarmId = '/subscriptions/XXXX/resourceGroups/EDSGRP1/providers/Microsoft.Web/serverfarms/ASP1'
HostingEnvironment = ResourceGroup1
ClientCertEnabled ='True'
您可以通过在现有站点上使用 Get-AzureRMResource 了解属性的选项。
【讨论】:
谢谢。这让我越过了我的障碍。您还可以查询值....这里我正在查询正确的 ServiceFarmId。 [String]$planId = '' $plan = Get-AzureRmAppServicePlan -Name 'MyAppServicePlanName' -ResourceGroupName 'MyResourceGroup' -ErrorAction SilentlyContinue if(-not $plan) throw [System.ArgumentOutOfRangeException] "缺少应用服务计划。(ResourceGroupName='MyResourceGroup', AppServicePlan.Name = 'MyAppServicePlanName')" #连接此应用服务的必要属性 $props = @ ServerFarmId = $planId else #Write-Host "START AzureRmAppServicePlan Properties" #$plan.PSObject.Properties #Write-Host "END AzureRmAppServicePlan Properties" #获取planId,这样可以作为backing-app -此 AppService 的服务计划 [String]$planId = $plan.Id 【参考方案3】:最近,Microsoft 将 Azure 网站更改为 Azure WebApps。但是 PowerShell cmdlet 命令保持不变。
所以你必须使用New-AzureWebsite
【讨论】:
我想你会发现在最新的 powershell commandlet 中有一个 New-AzureWebApp 命令。无论如何,New-AzureWebSite
或 New-AzureWebApp
都没有任何可辨别的选项来在应用服务环境中创建站点。
是的 - 可能的。我没有尝试这个解决方案。但是我看到使用 new-azurewebsite 只是创建了一个新的 Azure Web 应用程序。以上是关于如何使用 Powershell Commandlets 在应用服务环境中创建 Azure WebApp的主要内容,如果未能解决你的问题,请参考以下文章