チュートリアル:ARM テンプレートを使用した複数のリソース インスタンスの作成Tutorial: Create multiple resource instances with ARM templates

Azure Resource Manager (ARM) テンプレートでの反復処理を通じて、Azure リソースのインスタンスを複数作成する方法について説明します。Learn how to iterate in your Azure Resource Manager (ARM) template to create multiple instances of an Azure resource. このチュートリアルでは、3 つのストレージ アカウント インスタンスが作成されるようテンプレートを変更します。In this tutorial, you modify a template to create three storage account instances.

Azure Resource Manager による複数のインスタンスの作成の図

このチュートリアルに含まれるタスクは次のとおりです。This tutorial covers the following tasks:

  • クイック スタート テンプレートを開くOpen a Quickstart template
  • テンプレートの編集Edit the template
  • テンプレートのデプロイDeploy the template

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

前提条件Prerequisites

この記事を完了するには、以下が必要です。To complete this article, you need:

クイック スタート テンプレートを開くOpen a Quickstart template

Azure クイックスタート テンプレートは、ARM テンプレートのリポジトリです。Azure Quickstart Templates is a repository for ARM templates. テンプレートを最初から作成しなくても、サンプル テンプレートを探してカスタマイズすることができます。Instead of creating a template from scratch, you can find a sample template and customize it. このクイック スタートで使用されるテンプレートは、Create a standard storage account と呼ばれます。The template used in this quickstart is called Create a standard storage account. テンプレートにより、Azure ストレージ アカウント リソースが定義されます。The template defines an Azure Storage account resource.

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

  2. [ファイル名] に以下の URL を貼り付けます。In File name, paste the following URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-storage-account-create/azuredeploy.json
    
  3. [開く] を選択して、ファイルを開きます。Select Open to open the file.

  4. テンプレートで "Microsoft.Storage/storageAccounts" リソースが定義されています。There is a 'Microsoft.Storage/storageAccounts' resource defined in the template. テンプレートをテンプレート リファレンスと比較します。Compare the template to the template reference. カスタマイズする前にテンプレートの基本をある程度理解することは役に立ちます。It is helpful to get some basic understanding of the template before customizing it.

  5. [ファイル] > [名前を付けて保存] を選択し、ファイルを azuredeploy.json としてご自身のローカル コンピューターに保存します。Select File>Save As to save the file as azuredeploy.json to your local computer.

テンプレートの編集Edit the template

既存のテンプレートでは、1 つのストレージ アカウントが作成されます。The existing template creates one storage account. 3 つのストレージ アカウントが作成されるよう、テンプレートをカスタマイズします。You customize the template to create three storage accounts.

Visual Studio Code で、次の 4 つの変更を行います。From Visual Studio Code, make the following four changes:

Azure Resource Manager で複数のインスタンスを作成する

  1. ストレージ アカウントのリソース定義に copy 要素を追加します。Add a copy element to the storage account resource definition. copy 要素には、そのループの反復回数と変数を指定します。In the copy element, you specify the number of iterations and a variable for this loop. 数値は正の整数で、800 を超えることはできません。The count value must be a positive integer and can't exceed 800.
  2. copyIndex() 関数は、ループ内の現在の繰り返しを返します。The copyIndex() function returns the current iteration in the loop. インデックスを名前のプレフィックスとして使用します。You use the index as the name prefix. copyIndex() は 0 から始まります。copyIndex() is zero-based. インデックス値をオフセットするには、copyIndex() 関数に値を渡します。To offset the index value, you can pass a value in the copyIndex() function. たとえば、 copyindex (1) のように指定します。For example, copyIndex(1).
  3. variables 要素を削除します。これ以上使われないためです。Delete the variables element, because it is not used anymore.
  4. outputs 要素を削除します。Delete the outputs element. これは不要になりました。It is no longer needed.

完成したテンプレートは、次のようになります。The completed template looks like:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS",
        "Premium_LRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-04-01",
      "name": "[concat(copyIndex(),'storage', uniqueString(resourceGroup().id))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "copy": {
        "name": "storagecopy",
        "count": 3
      },
      "properties": {}
    }
  ]
}

複数のインスタンスの作成の詳細については、ARM テンプレートでリソースまたはプロパティの複数のインスタンスをデプロイする方法に関するページを参照してください。For more information about creating multiple instances, see Deploy multiple instances of a resource or property in ARM templates

テンプレートのデプロイDeploy the template

  1. Azure Cloud Shell にサインインします。Sign in to the Azure Cloud Shell

  2. 左上の [PowerShell] または [Bash] (CLI の場合) を選択して、希望の環境を選択します。Choose your preferred environment by selecting either PowerShell or Bash (for CLI) on the upper left corner. 切り替えた場合は、シェルを再起動する必要があります。Restarting the shell is required when you switch.

    Azure portal の Cloud Shell のファイルのアップロード

  3. [ファイルのアップロード/ダウンロード] を選択し、 [アップロード] を選択します。Select Upload/download files, and then select Upload. 先のスクリーンショットをご覧ください。See the previous screenshot. 前のセクションで保存したファイルを選択します。Select the file you saved in the previous section. ファイルをアップロードした後、ls コマンドと cat コマンドを使用して、ファイルが正常にアップロードされたことを確認できます。After uploading the file, you can use the ls command and the cat command to verify the file is uploaded successfully.

  4. Cloud Shell で次のコマンドを実行します。From the Cloud Shell, run the following commands. PowerShell コードまたは CLI コードを表示するタブを選択します。Select the tab to show the PowerShell code or the CLI code.

    echo "Enter a project name that is used to generate resource group name:" &&
    read projectName &&
    echo "Enter the location (i.e. centralus):" &&
    read location &&
    resourceGroupName="${projectName}rg" &&
    az group create --name $resourceGroupName --location "$location" &&
    az deployment group create --resource-group $resourceGroupName --template-file "$HOME/azuredeploy.json"
    

3 つのストレージ アカウントをすべて一覧表示するには、--name パラメータを省略します。To list all three storage accounts, omit the --name parameter:

echo "Enter a project name that is used to generate resource group name:" &&
read projectName &&
resourceGroupName="${projectName}rg" &&
az storage account list --resource-group $resourceGroupName &&
echo "Press [ENTER] to continue ..."

テンプレートの名前定義とストレージ アカウント名を比較します。Compare the storage account names with the name definition in the template.

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

Azure リソースが不要になったら、リソース グループを削除して、デプロイしたリソースをクリーンアップします。When the Azure resources are no longer needed, clean up the resources you deployed by deleting the resource group.

  1. Azure portal で、左側のメニューから [リソース グループ] を選択します。From the Azure portal, select Resource group from the left menu.
  2. [名前でフィルター] フィールドに、リソース グループ名を入力します。Enter the resource group name in the Filter by name field.
  3. リソース グループ名を選択します。Select the resource group name. リソース グループ内の合計 3 つのリソースが表示されます。You shall see a total of three resources in the resource group.
  4. トップ メニューから [リソース グループの削除] を選択します。Select Delete resource group from the top menu.

次のステップNext steps

このチュートリアルでは、複数のストレージ アカウント インスタンスを作成する方法について説明しました。In this tutorial, you learned how to create multiple storage account instances. 次のチュートリアルでは、複数のリソースと複数のリソース タイプを含むテンプレートを作成します。In the next tutorial, you develop a template with multiple resources and multiple resource types. 一部のリソースには依存リソースがあります。Some of the resources have dependent resources.