チュートリアル:Azure portal からエクスポートした JSON テンプレートを使用する

このチュートリアル シリーズでは、Azure ストレージ アカウントをデプロイするための Bicep ファイルを作成しました。 次の 2 つのチュートリアルでは、"App Service プラン" と "Web サイト" を追加します。 テンプレートを最初から作成する代わりに、Azure portal から JSON テンプレートをエクスポートする方法と、「Azure クイックスタート テンプレート」からサンプル テンプレートを使用する方法について説明します。 それらのテンプレートを自分用にカスタマイズします。 このチュートリアルでは、テンプレートのエクスポートと、Bicep ファイル用の結果のカスタマイズに焦点を当てます。 所要時間は約 14 分 です。

注意

この記事には、Bicep の例が含まれています。 Bicep は現在、プレビュー期間中です。 詳細については、「Bicep の概要」を参照してください。

前提条件

必須ではありませんが、出力に関するチュートリアルを済ませておくことをお勧めします。

Visual Studio Code と Bicep 拡張機能に加え、Azure PowerShell または Azure CLI のいずれかが必要です。 詳細については、Bicep ツールに関するセクションを参照してください。

Bicep ファイルを確認する

前のチュートリアルが完了した時点で、Bicep ファイルには次の内容が含まれていました。

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2019-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

この Bicep ファイルを使用すればストレージ アカウントをうまくデプロイできますが、それにさらにリソースを追加してみましょう。 既存のリソースから JSON テンプレートをエクスポートして、そのリソースの JSON をすばやく取得できます。 その後、JSON を Bicep ファイルに追加する前に Bicep に変換します。

Create App Service plan

  1. Azure portal にサインインします。

  2. [リソースの作成] を選択します。

  3. [Marketplace を検索] に「App Service プラン」と入力し、 [App Service プラン] を選択します。 [App Service プラン (クラシック)] は選択しないでください。

  4. [作成] を選択します

  5. 次のように入力します。

    • サブスクリプション: Azure サブスクリプションを選択します。
    • リソース グループ: [新規作成] を選択し、名前を指定します。 このチュートリアル シリーズで使用しているものとは別のリソース グループ名を指定してください。
    • [名前] : App Service プランの名前を入力します。
    • [オペレーティング システム] : [Linux] を選択します。
    • [リージョン] : Azure の場所を選択します。 たとえば [米国中部] です。
    • [価格レベル] : コストを節約するため、SKU を [Basic B1] (Dev/Test の下) に変更します。

    Resource Manager テンプレート、テンプレート エクスポート ポータル

  6. [確認と作成] を選択します。

  7. [作成] を選択します リソースが作成されるまでしばらくかかります。

テンプレートをエクスポートする

現時点で、Azure portal では JSON テンプレートのエクスポートのみがサポートされています。 JSON テンプレートを Bicep ファイルに逆コンパイルするために使用できるツールがあります。

  1. [リソースに移動] を選択します。

    リソースに移動

  2. [テンプレートのエクスポート] を選択します。

    Resource Manager テンプレート、テンプレートのエクスポート

    テンプレートのエクスポート機能では、リソースの現在の状態が取得されて、それをデプロイするためのテンプレートが生成されます。 テンプレートのエクスポートは、リソースをデプロイするために必要な JSON をすばやく取得する方法として便利な場合があります。

  3. 必要な部分は、Microsoft.Web/serverfarms 定義とパラメーター定義です。

    Resource Manager テンプレート、テンプレートのエクスポート、エクスポートされたテンプレート

    重要

    通常、エクスポートされたテンプレートには、テンプレートの作成に必要なものより詳細な情報が含まれます。 たとえば、エクスポートされたテンプレートの SKU オブジェクトには、5 つのプロパティがあります。 このテンプレートでも機能しますが、name プロパティだけを使用することもできます。 エクスポートしたテンプレートから始めて、必要に応じて変更できます。

  4. [ダウンロード] を選択します。 ダウンロードした ZIP ファイルには、template.jsonparameters.json が含まれています。 .zip ファイルを解凍します

  5. https://bicepdemo.z22.web.core.windows.net/ を参照します。 [Decompile](逆コンパイル) を選択し、template.json を開きます。 Bicep のテンプレートを取得できます。

既存の Bicep ファイルを修正する

逆コンパイルされてエクスポートされたテンプレートは、必要な Bicep の大部分を含みますが、カスタマイズして独自の Bicep ファイルにする必要があります。 独自の Bicep ファイルとエクスポートされた Bicep ファイルとの間の、パラメーターと変数の違いに特に注意してください。 もちろん、エクスポート プロセスでは、独自の Bicep ファイルで既に定義したパラメーターと変数は認識されません。

次の例では、独自の Bicep ファイルに対する追加箇所が示されています。 それには、エクスポートされたコードに加えていくつかの変更が含まれます。 最初に、独自の名前付け規則に合わせてパラメーターの名前が変更されています。 次に、App Service プランの場所に対する location パラメーターが使用されています。 3 つ目として、既定値で問題がないプロパティがいくつか削除されています。

ファイル全体をコピーし、その内容で Bicep ファイルを置き換えます。

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location
param appServicePlanName string = 'exampleplan'

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2019-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

resource appPlan 'Microsoft.Web/serverfarms@2016-09-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: 'B1'
    tier: 'Basic'
    size: 'B1'
    family: 'B'
    capacity: 1
  }
  kind: 'linux'
  properties: {
    perSiteScaling: false
    reserved: true
    targetWorkerCount: 0
    targetWorkerSizeId: 0
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Bicep ファイルをデプロイする

Bicep ファイルをデプロイするには、Azure CLI または Azure PowerShell を使用します。

まだリソース グループを作成していない場合は、「リソース グループの作成」を参照してください。 この例では、bicepFile 変数に Bicep ファイルのパスが設定済みであることを想定しています (1 つ目のチュートリアルを参照)。

このデプロイ コマンドレットを実行するには、Azure PowerShell の最新バージョンが必要です。

New-AzResourceGroupDeployment `
  -Name addappserviceplan `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $bicepFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS

注意

デプロイに失敗した場合は、verbose スイッチを使用して、作成しているリソースに関する情報を取得します。 デバッグの詳細については、debug スイッチを使用してください。

デプロイの確認

Azure portal からリソース グループを探すことでデプロイを確認できます。

  1. Azure portal にサインインします。
  2. 左側のメニューから [リソース グループ] を選択します。
  3. デプロイ先のリソース グループを選択します。
  4. リソース グループには、ストレージ アカウントと App Service プランが含まれます。

リソースをクリーンアップする

次のチュートリアルに移動する場合は、リソース グループを削除する必要はありません。

ここで終了する場合は、リソース グループを削除して、デプロイ済みのリソースをクリーンアップしましょう。

  1. Azure portal で、左側のメニューから [リソース グループ] を選択します。
  2. [名前でフィルター] フィールドに、リソース グループ名を入力します。
  3. リソース グループ名を選択します。
  4. トップ メニューから [リソース グループの削除] を選択します。

次のステップ

Azure portal から JSON テンプレートをエクスポートする方法、JSON テンプレートを Bicep ファイルに変換する方法、およびエクスポートしたテンプレートを Bicep 開発に使用する方法について説明しました。 また、Azure クイックスタート テンプレートを使用して、Bicep 開発を簡略化することができます。