Краткое руководство. Развертывание определения Управляемого приложения Azure с помощью Bicep

В этом кратком руководстве описывается, как с помощью Bicep развернуть определение Управляемого приложения Azure из каталога служб. Определения в каталоге служб доступны членам вашей организации.

Чтобы развернуть определение управляемого приложения из каталога служб, выполните следующие действия.

  • Используйте Bicep для разработки шаблона, который развертывает определение управляемого приложения.
  • Создайте файл параметров для развертывания.
  • Разверните определение управляемого приложения из каталога служб.

Предварительные требования

Для выполнения задач, описанных в этой статье, вам потребуется:

Получение определения управляемого приложения

Чтобы получить определение управляемого приложения с помощью Azure PowerShell, выполните следующие команды.

В Visual Studio Code откройте новый терминал PowerShell и войдите в свою подписку Azure.

Connect-AzAccount

Команда открывает браузер по умолчанию и предлагает войти в Azure. Дополнительные сведения см. в статье Вход с помощью Azure PowerShell.

На Azure PowerShell получите определение управляемого приложения. В этом примере используйте имя группы ресурсов bicepDefinitionRG , созданное при развертывании определения управляемого приложения.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionRG

Get-AzManagedApplicationDefinition список всех доступных определений в указанной группе ресурсов, например sampleBicepManagedApplication.

Следующая команда анализирует выходные данные, чтобы отобразить только имя определения и имя группы ресурсов. Имена используются при развертывании управляемого приложения.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionRG | 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.json. Скопируйте и вставьте следующий код в файл и сохраните его.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "definitionName": {
      "value": "sampleBicepManagedApplication"
    },
    "definitionRG": {
      "value": "bicepDefinitionRG"
    },
    "managedAppName": {
      "value": "sampleBicepManagedApp"
    },
    "mrgName": {
      "value": "<placeholder for managed resource group name>"
    },
    "appServicePlanName": {
      "value": "demoAppServicePlan"
    },
    "appServiceNamePrefix": {
      "value": "demoApp"
    },
    "storageAccountNamePrefix": {
      "value": "demostg1234"
    },
    "storageAccountType": {
      "value": "Standard_LRS"
    }
  }
}

Для развертывания управляемого приложения необходимо указать несколько параметров:

Параметр Значение
definitionName Имя определения каталога служб. В этом примере используется sampleBicepManagedApplication.
definitionRG Имя группы ресурсов, в которой хранится определение. В этом примере используется bicepDefinitionRG.
managedAppName Имя развернутого управляемого приложения. В этом примере используется sampleBicepManagedApp.
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 bicepAppRG -Location westus3

New-AzResourceGroupDeployment `
  -ResourceGroupName bicepAppRG `
  -TemplateFile deployServiceCatalog.bicep `
  -TemplateParameterFile deployServiceCatalog.parameters.json

В развертывании может отображаться предупреждение анализатора кода Bicep о том, что managedResourceGroupId свойство ожидает идентификатор ресурса. Так как управляемая группа ресурсов создается во время развертывания, идентификатор ресурса для свойства недоступен.

Просмотр результатов

После развертывания управляемого приложения из каталога служб будут созданы две группы ресурсов. Одна группа ресурсов содержит управляемое приложение. Другая группа ресурсов содержит развернутые управляемые ресурсы. В этом примере используется Служба приложений, план Служба приложений и учетная запись хранения.

Управляемое приложение

После завершения развертывания можно проверка состояние управляемого приложения.

Выполните следующую команду, чтобы проверка состояние управляемого приложения.

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepAppRG

Разверните свойства, чтобы упростить чтение сведений Properties .

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepAppRG | Select-Object -ExpandProperty Properties

Управляемые ресурсы

Вы можете просмотреть ресурсы, развернутые в управляемой группе ресурсов.

Чтобы отобразить ресурсы управляемой группы ресурсов, выполните следующую команду. Переменная была создана $mrgname при создании параметров.

Get-AzResource -ResourceGroupName $mrgname

Отображение всех назначений ролей для управляемой группы ресурсов.

Get-AzRoleAssignment -ResourceGroupName $mrgname

В определении управляемого приложения, созданном в статьях с кратким руководством, используется группа с назначением роли владелец. Группу можно просмотреть с помощью следующей команды.

Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner

Вы также можете перечислить запрет назначений для управляемой группы ресурсов.

Get-AzDenyAssignment -ResourceGroupName $mrgname

Очистка ресурсов

Завершив работу с управляемым приложением, вы можете удалить группы ресурсов и удалить все созданные ресурсы. Например, вы создали группы ресурсов bicepAppRG и управляемую группу ресурсов с префиксом mrg-bicepManagedApplication.

При удалении группы ресурсов bicepAppRG удаляется управляемое приложение, управляемая группа ресурсов и все ресурсы Azure.

Команда предложит подтвердить удаление группы ресурсов.

Remove-AzResourceGroup -Name bicepAppRG

Если вы хотите удалить определение управляемого приложения, удалите созданные группы ресурсов с именами packageStorageRG и bicepDefinitionRG.

Дальнейшие действия