빠른 시작: Bicep을 사용하여 Azure 관리형 애플리케이션 정의 배포

이 빠른 시작에서는 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. 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

관리형 애플리케이션 정의를 삭제하려면 직접 만든 packageStorageRGbicepDefinitionRG라는 리소스 그룹을 삭제하세요.

다음 단계