빠른 시작: Bicep을 사용하여 Azure 관리형 애플리케이션 정의 배포
이 빠른 시작에서는 Bicep을 사용하여 서비스 카탈로그에서 Azure 관리형 애플리케이션 정의를 배포하는 방법을 설명합니다. 서비스 카탈로그의 정의는 조직의 구성원이 사용할 수 있습니다.
서비스 카탈로그에서 관리형 애플리케이션 정의를 배포하려면 다음 작업을 수행합니다.
- Bicep을 사용하여 관리형 애플리케이션 정의를 배포하는 템플릿을 개발합니다.
- 배포에 대한 매개 변수 파일을 만듭니다.
- 서비스 카탈로그에서 관리형 애플리케이션 정의를 배포합니다.
필수 조건
이 문서의 작업을 완료하려면 다음 항목이 필요합니다.
- 서비스 카탈로그에서 관리형 애플리케이션 정의를 Bicep을 사용하여 만들고 게시하는 빠른 시작을 완료했습니다.
- 활성 구독이 있는 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에서 관리되는 애플리케이션의 정의를 가져옵니다. 이 예에서는 관리형 애플리케이션 정의를 배포할 때 만들어진 리소스 그룹 이름 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. App Service 요금제 이름은 구독의 리소스 그룹 내에서 고유해야 합니다. |
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
배포 시 managedResourceGroupId
속성에 리소스 ID가 필요하다는 Bicep linter 경고가 표시될 수 있습니다. 관리되는 리소스 그룹은 배포 중에 만들어지므로 속성에 사용할 수 있는 리소스 ID가 없습니다.
결과 보기
서비스 카탈로그 관리되는 애플리케이션이 배포되면 두 개의 새 리소스 그룹이 생깁니다. 하나의 리소스 그룹에는 관리되는 애플리케이션이 포함됩니다. 다른 리소스 그룹에는 배포된 관리되는 리소스가 포함되어 있습니다. 이 예에서는 App Service, App Service 요금제 및 스토리지 계정입니다.
관리되는 애플리케이션
배포가 완료되면 관리되는 애플리케이션의 상태를 확인할 수 있습니다.
다음 명령을 실행하여 관리되는 애플리케이션의 상태를 확인합니다.
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라는 리소스 그룹을 삭제하세요.
다음 단계
- Azure PowerShell, Azure CLI 또는 포털을 사용하여 관리형 애플리케이션에 대한 정의 파일을 만들고 게시하는 방법을 알아보려면 빠른 시작: Azure 관리형 애플리케이션 정의 만들기 및 게시로 이동하세요.
- 자체 스토리지를 사용하여 관리되는 애플리케이션에 대한 정의 파일을 만들고 게시하려면 빠른 시작: Bring Your Own Storage로 Azure Managed Applications 정의 만들기 및 게시로 이동합니다.