快速入门:使用 Bicep 部署 Azure 托管应用程序定义
本快速入门介绍如何使用 Bicep 从服务目录部署 Azure 托管应用程序定义。 你的服务目录中的定义可供组织成员使用。
若要从服务目录部署托管应用程序定义,请执行以下任务:
- 使用 Bicep 开发一个模板来部署托管应用程序定义。
- 为部署创建参数文件。
- 从服务目录部署托管应用程序定义。
先决条件
若要完成本文中的任务,需要准备好以下项:
- 使用快速入门:使用 Bicep 创建和发布 Azure 托管应用程序定义部署了定义。
- 具有活动订阅的 Azure 帐户。 如果没有帐户,请在开始之前创建一个试用版帐户。
- 包含最新 Azure 资源管理器工具扩展的 Visual Studio Code。 对于 Bicep 文件,请安装适用于 Visual Studio Code 的 Bicep 扩展。
- 最新版本的 Azure PowerShell 或 Azure CLI。
获取托管应用程序定义
若要使用 Azure PowerShell 获取托管应用程序的定义,请运行以下命令。
在 Visual Studio Code 中,打开新的 PowerShell 终端并登录到 Azure 订阅。
Connect-AzAccount -Environment AzureChinaCloud
此命令会打开默认浏览器,并提示登录到 Azure。 有关详细信息,请转到使用 Azure PowerShell 登录。
从 Azure PowerShell 获取托管应用程序的定义。 在此示例中,使用部署托管应用程序定义时创建的资源组名称 bicepDefinitionGroup。
Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionGroup
Get-AzManagedApplicationDefinition
列出了指定资源组中的所有可用定义,例如 sampleBicepManagedApplication。
以下命令分析输出以仅显示定义名称和资源组名称。 你在部署托管应用程序时会使用这些名称。
Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionGroup | Select-Object -Property Name, ResourceGroupName
创建 Bicep 文件
打开 Visual Studio Code 并创建名为 deployServiceCatalog.bicep 的文件。 将以下代码复制并粘贴到文件中并保存。
@description('Region where the resources are deployed.')
param location string = resourceGroup().location
@description('Resource group name where the definition is stored.')
param definitionRG string
@description('Name of the service catalog definition.')
param definitionName string
// Parameters for the managed application's resource deployment
@description('Name of the managed application.')
param managedAppName string
@description('Name for the managed resource group.')
param mrgName string
@maxLength(40)
@description('Service plan name with maximum 40 alphanumeric characters and hyphens. Must be unique within a resource group in your subscription.')
param appServicePlanName string
@maxLength(47)
@description('Globally unique across Azure. Maximum of 47 alphanumeric characters or hyphens.')
param appServiceNamePrefix string
@maxLength(11)
@description('Use only lowercase letters and numbers and a maximum of 11 characters.')
param storageAccountNamePrefix string
@allowed([
'Premium_LRS'
'Standard_LRS'
'Standard_GRS'
])
@description('The options are Premium_LRS, Standard_LRS, or Standard_GRS')
param storageAccountType string
@description('Resource ID for the managed application definition.')
var appResourceId = resourceId('${definitionRG}', 'Microsoft.Solutions/applicationdefinitions', '${definitionName}')
@description('Creates the path for the managed resource group. The resource group is created during deployment.')
var mrgId = '${subscription().id}/resourceGroups/${mrgName}'
resource bicepServiceCatalogApp 'Microsoft.Solutions/applications@2021-07-01' = {
name: managedAppName
kind: 'ServiceCatalog'
location: location
properties: {
applicationDefinitionId: appResourceId
managedResourceGroupId: mrgId
parameters: {
appServicePlanName: {
value: appServicePlanName
}
appServiceNamePrefix: {
value: appServiceNamePrefix
}
storageAccountNamePrefix: {
value: storageAccountNamePrefix
}
storageAccountType: {
value: storageAccountType
}
}
}
}
有关资源类型的详细信息,请转到 Microsoft.Solutions/applications。
创建参数文件
打开 Visual Studio Code 并创建名为 deployServiceCatalog-parameters.bicepparam 的参数文件。 将以下代码复制并粘贴到文件中并保存。
using './deployServiceCatalog.bicep'
param definitionName = 'sampleBicepManagedApplication'
param definitionRG = 'bicepDefinitionGroup'
param managedAppName = 'sampleBicepManagedApp'
param mrgName = 'placeholder for managed resource group name'
param appServicePlanName = 'demoAppServicePlan'
param appServiceNamePrefix = 'demoApp'
param storageAccountNamePrefix = 'demostg1234'
param storageAccountType = 'Standard_LRS'
需要提供几个参数来部署托管应用程序:
参数 | 值 |
---|---|
definitionName |
服务目录定义的名称。 此例使用 sampleBicepManagedApplication。 |
definitionRG |
存储定义的资源组名称。 此示例使用 bicepDefinitionGroup。 |
managedAppName |
部署的托管应用程序的名称。 此示例使用 sampleBicepManagedApp。 |
mrgName |
包含应用程序已部署资源的托管资源组的唯一名称。 资源组是在部署托管应用程序时创建的。 要创建受管理资源组名称,请运行此参数列表后面的命令,并使用 $mrgname 值替换参数文件中的占位符。 |
appServicePlanName |
创建计划名称。 最多 40 个字母数字字符和连字符。 例如 demoAppServicePlan。 应用服务计划名称在订阅中的资源组中必须是唯一的。 |
appServiceNamePrefix |
为计划名称创建前缀。 最多 47 个字母数字字符或连字符。 例如 demoApp。 在部署期间,前缀与唯一字符串连接,以创建在 Azure 中全局唯一的名称。 |
storageAccountNamePrefix |
只能使用小写字母和数字,最多 11 个字符。 例如 demostg1234。 在部署期间,前缀与唯一字符串连接,以创建在 Azure 中全局唯一的名称。 |
storageAccountType |
选项包括 Premium_LRS、Standard_LRS 和 Standard_GRS。 |
可以运行以下命令来为托管资源组创建名称。
$mrgprefix = 'mrg-sampleBicepManagedApplication-'
$mrgtimestamp = Get-Date -UFormat "%Y%m%d%H%M%S"
$mrgname = $mrgprefix + $mrgtimestamp
$mrgname
$mrgprefix
和 $mrgtimestamp
变量连接并存储在变量 $mrgname
中。 变量的值采用 mrg-sampleBicepManagedApplication-20230512103059 格式。 在部署托管应用程序时使用 $mrgname
变量的值。
部署托管应用程序
使用 Azure PowerShell 或 Azure CLI 创建资源组并部署托管应用程序。
New-AzResourceGroup -Name bicepApplicationGroup -Location chinanorth3
$deployparms = @{
ResourceGroupName = "bicepApplicationGroup"
TemplateFile = "deployServiceCatalog.bicep"
TemplateParameterFile = "deployServiceCatalog-parameters.bicepparam"
Name = "deployServiceCatalogApp"
}
New-AzResourceGroupDeployment @deployparms
$deployparms
变量使用 PowerShell splatting 来提高参数值的可读性。
部署可能会显示 Bicep linter 警告,指出属性 managedResourceGroupId
需要资源 ID。 由于托管资源组是在部署期间创建的,因此没有可用于该属性的资源 ID。
查看结果
部署服务目录托管应用程序后,可获得两个新资源组。 一个资源组包含托管应用程序。 另一个资源组包含已部署的受管理资源。 在此示例中,即应用程序服务、应用服务计划和存储帐户。
托管应用程序
部署完成后,可以检查托管应用程序的状态。
运行以下命令以检查托管应用程序的状态。
Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepApplicationGroup
展开属性,以便更轻松地阅读 Properties
信息。
Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepApplicationGroup | Select-Object -ExpandProperty Properties
托管的资源
可以查看部署到受管理资源组的资源。
若要显示受管理资源组的资源,请运行以下命令。 你在创建参数时创建了 $mrgname
变量。
Get-AzResource -ResourceGroupName $mrgname
若要显示受管理资源组的所有角色分配。
Get-AzRoleAssignment -ResourceGroupName $mrgname
在快速入门文章中创建的托管应用程序定义使用了具有所有者角色分配的组。 可以使用以下命令查看组。
Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner
还可以列出受管理资源组的拒绝分配。
Get-AzDenyAssignment -ResourceGroupName $mrgname
清理资源
处理完托管应用程序后,可以删除资源组,这将删除你创建的所有资源。 例如,你创建了资源组 bicepApplicationGroup 和前缀为 mrg-bicepManagedApplication 的受管理资源组。
删除 bicepApplicationGroup 资源组时,会同时删除托管应用程序、受管理资源组和所有 Azure 资源。
命令会提示你确认删除资源组。
Remove-AzResourceGroup -Name bicepApplicationGroup
如果想要删除托管应用程序定义,请删除创建的名为 packageStorageGroup 和 bicepDefinitionGroup 的资源组。
后续步骤
- 若要了解如何使用 Azure PowerShell、Azure CLI 或门户为托管应用程序创建和发布定义文件,请转到快速入门:创建和发布 Azure 托管应用程序定义。
- 若要使用自己的存储为托管应用程序创建和发布定义文件,请转到快速入门:自带存储来创建和发布 Azure 托管应用程序定义。