クイックスタート: Bicep を使用した Azure マネージド アプリケーション定義のデプロイ

このクイックスタートでは、Bicep を使用してサービス カタログから Azure マネージド アプリケーション定義をデプロイする方法について説明します。 サービス カタログ内の定義は、組織のメンバーが使用できます。

サービス カタログからマネージド アプリケーション定義をデプロイするには、次のタスクを行う必要があります。

  • Bicep を使用して、マネージド アプリケーション定義をデプロイするテンプレートを作成します。
  • デプロイ用のパラメーター ファイルを作成します。
  • サービス カタログからマネージド アプリケーション定義をデプロイします。

前提条件

この記事のタスクを完了するには、次のものが必要です。

マネージド アプリケーション定義を取得する

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

@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 です。 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 bicepApplicationGroup -Location westus

$deployparms = @{
  ResourceGroupName = "bicepApplicationGroup"
  TemplateFile = "deployServiceCatalog.bicep"
  TemplateParameterFile = "deployServiceCatalog-parameters.bicepparam"
  Name = "deployServiceCatalogApp"
}

New-AzResourceGroupDeployment @deployparms

$deployparms 変数は PowerShell のスプラッティングを使用してパラメータ値の読みやすさを向上させます。

デプロイ時に、managedResourceGroupId プロパティにリソース ID が必要であることを示す Bicep リンター警告が表示される場合があります。 マネージド リソース グループはデプロイ中に作成されるため、このプロパティに使用できるリソース ID はありません。

結果の表示

サービス カタログ マネージド アプリケーションをデプロイした後には、2 つの新しいリソース グループが作成されています。 1 つのリソース グループには、マネージド アプリケーションが含まれます。 もう 1 つのリソース グループには、デプロイされたマネージド リソースが含まれます。 この例では、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

マネージド アプリケーション定義を削除する場合は、作成した packageStorageGroupbicepDefinitionGroup という名前のリソース グループを削除します。

次のステップ