チュートリアル:ARM テンプレートにリソースを追加する

前のチュートリアルでは、空の Azure Resource Manager テンプレート (ARM テンプレート) を初めて作成してデプロイする方法について説明しました。 これで、そのテンプレートに実際にリソースをデプロイすることができます。 この場合は、Azure ストレージ アカウントです。 このチュートリアルを完了するには 9 分かかります。

前提条件

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

Visual Studio Code をインストールし、Azure Resource Manager ツールの拡張機能、Azure PowerShell または Azure コマンド ライン インターフェイス (CLI) のいずれかを使用する必要があります。 詳細については、テンプレートのツールに関する記事を参照してください。

リソースの追加

既存のテンプレートに Azure ストレージ アカウントの定義を追加するには、次の例で強調表示されている JSON ファイルをご覧ください。 テンプレートの一部をコピーするのではなく、ファイル全体をコピーして、既存のテンプレートの内容を置き換えてください。

{provide-unique-name} と中かっこ {} を一意のストレージ アカウント名に置き換えます。

重要

ストレージ アカウント名は Azure 内で一意である必要があります。 小文字または数字のみで、24 文字の制限があります。 store1 のような名前をプレフィックスとして使用してから、自分のイニシャルと今日の日付を追加できます。 たとえば、store1abc06132022 のような名前にすることができます。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "{provide-unique-name}",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

ストレージ アカウントの一意の名前を考えるのは容易ではなく、大規模なデプロイの自動化ではうまくいきません。 このチュートリアル シリーズで後ほど、一意の名前の作成を容易にするテンプレート機能を使用します。

リソースのプロパティ

リソースの種類ごとに使用するプロパティをどうやって見つければよいのか、悩む方もいるかもしれません。 デプロイするリソースの種類を見つけるには、ARM テンプレート リファレンスをご利用ください。

デプロイするすべてのリソースには、少なくとも次の 3 つのプロパティがあります。

  • type: リソースの種類。 この値は、リソース プロバイダーの名前空間とリソースの種類を組み合わせたものです (例: Microsoft.Storage/storageAccounts)。
  • apiVersion: リソースの作成に使用する REST API バージョン。 リソース プロバイダーからは、それぞれ独自の API バージョンが公開されているため、これはその種類に固有の値となります。
  • name:リソースの名前。

ほとんどのリソースには、リソースのデプロイ先リージョンを設定する location プロパティもあります。

その他のプロパティは、リソースの種類と API バージョンにより異なります。 API バージョンと利用可能なプロパティの関係を理解することが大切ですので、もう少し踏み込んでみましょう。

このチュートリアルでは、テンプレートにストレージ アカウントを追加します。 ストレージ アカウントの API バージョンは、storageAccounts 2021-09-01 で確認できます。 すべてのプロパティをテンプレートに追加したわけではないことに注目してください。 プロパティの多くは省略可能です。 Microsoft.Storage リソース プロバイダーから新しい API バージョンがリリースされる可能性もありますが、デプロイするバージョンを変更する必要はありません。 そのバージョンを使い続けることができ、またデプロイの結果に一貫性を確保できます。

以前の API バージョンを表示した場合、利用できるプロパティが少ないことがわかります。

リソースの API バージョンを変更することにした場合は、そのバージョンのプロパティを評価したうえで、適宜テンプレートを調整してください。

テンプレートのデプロイ

テンプレートをデプロイしてストレージ アカウントを作成できます。 履歴内で見つけやすいよう、実際のデプロイには別の名前を付けてください。

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

New-AzResourceGroupDeployment `
  -Name addstorage `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile

Note

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

これらのエラーは、発生する可能性のある 2 つのデプロイ エラーです。

  • Error: Code=AccountNameInvalid; Message={provide-unique-name} は、有効なストレージ アカウント名ではありません。 ストレージ アカウント名の長さは 3 - 24 文字で、使用できるのは数字と小文字のみです。

    テンプレート内の {provide-unique-name} は、一意のストレージ アカウント名に置き換えてください。 「リソースの追加」を参照してください。

  • Error: Code=StorageAccountAlreadyTaken; Message=The storage account named store1abc09092019 は既に使用されています。

    テンプレート内で、別のストレージ アカウント名を試してみてください。

ストレージ アカウントを作成しているため、このデプロイには空のテンプレートのデプロイよりも時間がかかります。 完了までに約 1 分かかります。

デプロイの確認

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

  1. Azure portal にサインインします。
  2. 左側のメニューから [リソース グループ] を選択します。
  3. myResourceGroup の左側にあるチェック ボックスをオンにし、[myResourceGroup] を選びます
  4. デプロイ先のリソース グループを選択します。
  5. ストレージ アカウントがデプロイされていることがわかります。
  6. デプロイ ラベルに "Deployments: 2 Succeeded (デプロイ: 2 件成功) " と表示されていることに注目してください。

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

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

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

  1. Azure portal で、左側のメニューから [リソース グループ] を選択します。
  2. [任意のフィールドのフィルター] ボックスにリソース グループ名を入力します。
  3. myResourceGroup の横にあるチェック ボックスをオンにし、[myResourceGroup] または選んだリソース グループ名を選びます。
  4. トップ メニューから [リソース グループの削除] を選択します。

次のステップ

Azure ストレージ アカウントをデプロイする簡単なテンプレートを作成しました。 後続のチュートリアルでは、パラメーター、変数、リソース、出力をテンプレートに追加する方法について説明します。 それらの機能は、はるかに複雑なテンプレートの構成要素となります。