チュートリアル:依存リソースを含む ARM テンプレートを作成する

Azure Resource Manager テンプレート (ARM テンプレート) を作成して、複数のリソースをデプロイしたりデプロイ順序を構成したりする方法を説明します。 テンプレートを作成したら、Azure portal から Azure Cloud Shell を使用してテンプレートをデプロイします。

このチュートリアルでは、ストレージ アカウント、仮想マシン、仮想ネットワーク、およびその他の依存リソースを作成します。 別のリソースが存在するまではデプロイできないリソースもあります。 たとえば、仮想マシンを作成するには、そのストレージ アカウントとネットワーク インターフェイスが存在している必要があります。 このリレーションシップは、一方のリソースと他方のリソースに依存関係を持たせることにより定義します。 Resource Manager により、リソース間の依存関係が評価され、リソースは依存する順にデプロイされます。 相互依存していないリソースは、平行してデプロイされます。 詳細については、「Azure Resource Manager テンプレートでのリソース デプロイ順序の定義」を参照してください。

Resource Manager テンプレート内の依存リソースのデプロイ順を示す図。

このチュートリアルに含まれるタスクは次のとおりです。

  • クイック スタート テンプレートを開く
  • テンプレートを調べる
  • テンプレートのデプロイ

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

リソースの依存関係について取り上げた Learn モジュールについては、「高度な ARM テンプレート機能を使用して複雑なクラウド デプロイを管理する」を参照してください。

前提条件

この記事を完了するには、以下が必要です。

クイック スタート テンプレートを開く

Azure クイックスタート テンプレートは、ARM テンプレートのリポジトリです。 テンプレートを最初から作成しなくても、サンプル テンプレートを探してカスタマイズすることができます。 このチュートリアルで使用するテンプレートは、「Deploy a simple Windows VM」(単純な Windows VM をデプロイする) と呼ばれます。

  1. Visual Studio Code から、 [ファイル]>[ファイルを開く] を選択します。

  2. [ファイル名] に以下の URL を貼り付けます。

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. [開く] を選択して、ファイルを開きます。

  4. [ファイル]>[Save As](名前を付けて保存) を選択し、このファイルのコピーを azuredeploy.json という名前でローカル コンピューターに保存します。

テンプレートを調べる

このセクションでテンプレートを調べるときは、次の質問に回答するようにしてください。

  • このテンプレートに定義されている Azure リソースの数はいくつか。
  • リソースの 1 つは、Azure Storage アカウントです。 定義は前回のチュートリアルで使用されたものと同じか。
  • このテンプレートに定義されているリソースのテンプレート 参照を見つけることができるか。
  • リソースの依存関係を見つけることができるか。
  1. Visual Studio Code で、resources 内の最初のレベルの要素と 2 番目のレベルの要素のみが表示されるまで要素を折り畳みます。

    ARM テンプレートと折りたたみ済みの要素を表示している Visual Studio Code のスクリーンショット。

    テンプレートによって定義されたリソースは、6 つあります。

  2. 最初のリソースを展開します。 それはストレージ アカウントです。 リソース定義とテンプレート リファレンスを比較します。

    ARM テンプレートのストレージ アカウント定義を示す Visual Studio Code のスクリーンショット。

  3. 2 番目のリソースを展開します。 リソースの種類は Microsoft.Network/publicIPAddresses です。 リソース定義とテンプレート リファレンスを比較します。

    ARM テンプレートのパブリック IP アドレス定義を示す Visual Studio Code のスクリーンショット。

  4. 3 番目のリソースを展開します。 リソースの種類は Microsoft.Network/networkSecurityGroups です。 リソース定義とテンプレート リファレンスを比較します。

    ARM テンプレートのネットワーク セキュリティ グループ定義を示す Visual Studio Code のスクリーンショット。

  5. 4 番目のリソースを展開します。 リソースの種類は Microsoft.Network/virtualNetworks です。

    ARM テンプレートの dependsOn 要素を含む仮想ネットワーク定義を示す Visual Studio Code のスクリーンショット。

    dependsOn 要素を使用すると、1 つのリソースが 1 つ以上のリソースに依存していることを定義できます。 このリソースは、もう 1 つのリソースに依存しています。

    • Microsoft.Network/networkSecurityGroups
  6. 5 番目の要素を展開します。 リソースの種類は Microsoft.Network/networkInterfaces です。 このリソースは他の 2 つのリソースに依存しています。

    • Microsoft.Network/publicIPAddresses
    • Microsoft.Network/virtualNetworks
  7. 6 番目のリソースを展開します。 このリソースは、仮想マシンです。 次に示す他の 2 つのリソースに依存しています。

    • Microsoft.Storage/storageAccounts
    • Microsoft.Network/networkInterfaces

次の図は、このテンプレートのリソースと依存関係の情報を示しています。

Visual Studio Code に表示される ARM テンプレートのリソース間の依存関係を示す図。

依存関係を指定することにより、Resource Manager は、ソリューションを効率的にデプロイします。 ストレージ アカウント、パブリック IP アドレス、および仮想ネットワークは、依存関係がないため、同時にデプロイされます。 パブリック IP アドレスと仮想ネットワークがデプロイされると、ネットワーク インターフェイスが作成されます。 その他のすべてのリソースがデプロイされると、Resource Manager は、仮想マシンをデプロイします。

テンプレートのデプロイ

  1. Cloud Shell にサインインします。

  2. 左上の [PowerShell] または [Bash] (CLI の場合) を選択して、希望の環境を選択します。 切り替えた場合は、シェルを再起動する必要があります。

    Azure portal Cloud Shell のアップロード ファイル オプションが強調表示されたスクリーンショット。

  3. [ファイルのアップロード/ダウンロード] を選択し、 [アップロード] を選択します。 先のスクリーンショットをご覧ください。 前に保存したファイルを選択します。 ファイルをアップロードした後、ls コマンドと cat コマンドを使用して、ファイルが正常にアップロードされたことを確認できます。

  4. 次の PowerShell スクリプトを実行してテンプレートをデプロイします。

    echo "Enter a project name that is used to generate resource group name:" &&
    read projectName &&
    echo "Enter the location (i.e. centralus):" &&
    read location &&
    echo "Enter the virtual machine admin username:" &&
    read adminUsername &&
    echo "Enter the DNS label prefix:" &&
    read dnsLabelPrefix &&
    resourceGroupName="${projectName}rg" &&
    az group create --name $resourceGroupName --location $location &&
    az deployment group create --resource-group $resourceGroupName --template-file "$HOME/azuredeploy.json" --parameters adminUsername=$adminUsername dnsLabelPrefix=$dnsLabelPrefix
    
  5. 仮想マシンの確認を目的とする仮想マシンへの RDP が、正常に作成されました。

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

Azure リソースが不要になったら、リソース グループを削除して、デプロイしたリソースをクリーンアップします。

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

次のステップ

このチュートリアルでは、テンプレートを作成してデプロイし、仮想マシン、仮想ネットワーク、および依存リソースを作成しました。 デプロイ スクリプトを使用してデプロイ前後の操作を実行する方法については、次のページを参照してください。