빠른 시작: Bicep을 사용하여 Azure 관리형 애플리케이션 정의 배포
이 빠른 시작에서는 Bicep을 사용하여 서비스 카탈로그에서 Azure 관리형 애플리케이션 정의를 배포하는 방법을 설명합니다. 서비스 카탈로그의 정의는 조직의 구성원이 사용할 수 있습니다.
서비스 카탈로그에서 관리형 애플리케이션 정의를 배포하려면 다음 작업을 수행합니다.
- Bicep을 사용하여 관리형 애플리케이션 정의를 배포하는 템플릿을 개발합니다.
- 배포에 대한 매개 변수 파일을 만듭니다.
- 서비스 카탈로그에서 관리형 애플리케이션 정의를 배포합니다.
필수 조건
이 문서의 작업을 완료하려면 다음 항목이 필요합니다.
- 빠른 시작: Bicep을 사용하여 Azure 관리되는 애플리케이션 정의 만들기 및 게시를 사용하여 정의를 배포했습니다.
- 활성 구독이 있는 Azure 계정. 계정이 없으면 시작하기 전에 무료 계정을 만듭니다.
- 최신 Azure Resource Manager 도구 확장이 있는 Visual Studio Code. Bicep 파일의 경우 Visual Studio Code용 Bicep 확장을 설치합니다.
- 최신 버전의 Azure PowerShell 또는 Azure CLI.
관리되는 애플리케이션 정의 가져오기
Azure PowerShell을 사용하여 관리되는 애플리케이션의 정의를 가져오려면 다음 명령을 실행합니다.
Visual Studio Code에서 새 PowerShell 터미널을 열고 Azure 구독에 로그인합니다.
Connect-AzAccount
이 명령은 기본 브라우저를 열고 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
@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
}
}
}
}
리소스 종류에 대한 자세한 내용을 보려면 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'
관리형 애플리케이션을 배포하려면 여러 매개 변수를 제공해야 합니다.
매개 변수 | 값 |
---|---|
definitionName |
서비스 카탈로그 정의의 이름입니다. 이 예제에서는 sampleBicepManagedApplication을 사용합니다. |
definitionRG |
정의가 저장되는 리소스 그룹 이름입니다. 이 예제에서는 bicepDefinitionGroup을 사용합니다. |
managedAppName |
배포된 관리형 애플리케이션의 이름입니다. 이 예제에서는 sampleBicepManagedApp을 사용합니다. |
mrgName |
애플리케이션의 배포된 리소스를 포함하는 관리되는 리소스 그룹의 고유 이름입니다. 리소스 그룹은 관리되는 애플리케이션을 배포할 때 만들어집니다. 관리되는 리소스 그룹 이름을 만들려면 이 매개 변수 목록 뒤에 오는 명령을 실행하고 $mrgname 값을 사용하여 매개 변수 파일의 자리 표시자를 바꿉니다. |
appServicePlanName |
플랜 이름을 만듭니다. 최대 40자의 영숫자와 하이픈입니다. 예: demoAppServicePlan. App Service 요금제 이름은 구독의 리소스 그룹 내에서 고유해야 합니다. |
appServiceNamePrefix |
플랜 이름의 접두사를 만듭니다. 최대 47자의 영숫자 문자 또는 하이픈입니다. 예: demoApp. 배포하는 동안 접두사는 고유한 문자열과 연결되어 Azure 전체에서 전역적으로 고유한 이름을 만듭니다. |
다음 명령을 실행하여 관리되는 리소스 그룹의 이름을 만들 수 있습니다.
$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 westus
$deployparms = @{
ResourceGroupName = "bicepApplicationGroup"
TemplateFile = "deployServiceCatalog.bicep"
TemplateParameterFile = "deployServiceCatalog-parameters.bicepparam"
Name = "deployServiceCatalogApp"
}
New-AzResourceGroupDeployment @deployparms
$deployparms
변수는 PowerShell 스플래팅을 사용하여 매개 변수 값의 가독성을 향상시킵니다.
배포 시 managedResourceGroupId
속성에 리소스 ID가 필요하다는 Bicep linter 경고가 표시될 수 있습니다. 관리되는 리소스 그룹은 배포 중에 만들어지므로 속성에 사용할 수 있는 리소스 ID가 없습니다.
결과 보기
서비스 카탈로그 관리되는 애플리케이션이 배포되면 두 개의 새 리소스 그룹이 생깁니다. 하나의 리소스 그룹에는 관리되는 애플리케이션이 포함됩니다. 다른 리소스 그룹에는 배포된 관리되는 리소스가 포함되어 있습니다. 이 예에서는 App Service, App Service 요금제 및 스토리지 계정입니다.
관리되는 애플리케이션
배포가 완료되면 관리되는 애플리케이션의 상태를 확인할 수 있습니다.
다음 명령을 실행하여 관리되는 애플리케이션의 상태를 확인합니다.
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 관리형 애플리케이션 정의 만들기 및 게시로 이동하세요.
- 자체 스토리지를 사용하여 관리되는 애플리케이션에 대한 정의 파일을 만들고 게시하려면 빠른 시작: Bring Your Own Storage로 Azure Managed Applications 정의 만들기 및 게시로 이동합니다.