次の方法で共有


クイックスタート: 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

@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 リンター警告が表示される場合があります。 マネージド リソース グループはデプロイ中に作成されるため、このプロパティに使用できるリソース 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 という名前のリソース グループを削除します。

次のステップ