チュートリアル:ARM テンプレートを使用した複数のリソース インスタンスの作成
Azure Resource Manager テンプレート (ARM テンプレート) で反復処理して、Azure リソースの複数のインスタンスを作成する方法について説明します。 このチュートリアルでは、3 つのストレージ アカウント インスタンスが作成されるようテンプレートを変更します。
このチュートリアルに含まれるタスクは次のとおりです。
- クイック スタート テンプレートを開く
- テンプレートの編集
- テンプレートのデプロイ
Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
リソースのコピーについて取り上げた Learn モジュールについては、「高度な ARM テンプレート機能を使用して複雑なクラウド デプロイを管理する」を参照してください。
前提条件
この記事を完了するには、以下が必要です。
- Visual Studio Code と Resource Manager ツール拡張機能。 「クイック スタート:Visual Studio Code を使用して ARM テンプレートを作成する」を参照してください。
クイック スタート テンプレートを開く
Azure クイックスタート テンプレートは、ARM テンプレートのリポジトリです。 テンプレートを最初から作成しなくても、サンプル テンプレートを探してカスタマイズすることができます。 このクイック スタートで使用されるテンプレートは、Create a standard storage account と呼ばれます。 テンプレートにより、Azure ストレージ アカウント リソースが定義されます。
Visual Studio Code から、 [ファイル]>[ファイルを開く] を選択します。
[ファイル名] に以下の URL を貼り付けます。
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
[開く] を選択して、ファイルを開きます。
テンプレートに、
Microsoft.Storage/storageAccounts
リソースが定義されています。 テンプレートをテンプレート リファレンスと比較します。 カスタマイズする前にテンプレートの基本をある程度理解することは役に立ちます。[ファイル]>[名前を付けて保存] を選択し、ファイルを azuredeploy.json としてご自身のローカル コンピューターに保存します。
テンプレートの編集
既存のテンプレートでは、1 つのストレージ アカウントが作成されます。 3 つのストレージ アカウントが作成されるよう、テンプレートをカスタマイズします。
Visual Studio Code で、次の 4 つの変更を行います。
ストレージ アカウントのリソース定義に
copy
要素を追加します。copy
要素には、このループの反復回数と変数を指定します。 数値は正の整数で、800 を超えることはできません。"copy": { "name": "storageCopy", "count": 3 },
copyIndex()
関数は、ループ内の現在の繰り返しを返します。 インデックスを名前のプレフィックスとして使用します。copyIndex()
は 0 から始まります。 インデックス値をオフセットするには、copyIndex()
関数に値を渡します。 たとえば、「copyIndex(1)
」のように入力します。"name": "[format('{0}storage{1}', copyIndex(), uniqueString(resourceGroup().id))]",
storageAccountName
パラメーター定義はもう使用しないため、削除します。outputs
要素を削除します。 これは不要になりました。metadata
要素を削除します。
完成したテンプレートは、次のようになります。
{
"$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": [
"Premium_LRS",
"Premium_ZRS",
"Standard_GRS",
"Standard_GZRS",
"Standard_LRS",
"Standard_RAGRS",
"Standard_RAGZRS",
"Standard_ZRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for the storage account."
}
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-06-01",
"name": "[format('{0}storage{1}', copyIndex(), uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"copy": {
"name": "storageCopy",
"count": 3
},
"properties": {}
}
]
}
変更を保存します。
複数のインスタンスの作成の詳細については、「ARM テンプレートでのリソースの反復処理」を参照してください
テンプレートのデプロイ
Azure Cloud Shell にサインインします。
左上の [PowerShell] または [Bash] (CLI の場合) を選択して、希望の環境を選択します。 切り替えた場合は、シェルを再起動する必要があります。
[ファイルのアップロード/ダウンロード] を選択し、 [アップロード] を選択します。 先のスクリーンショットをご覧ください。 前のセクションで保存したファイルを選択します。 ファイルをアップロードした後、
ls
コマンドとcat
コマンドを使用して、ファイルが正常にアップロードされたことを確認できます。Cloud Shell で次のコマンドを実行します。 PowerShell コードまたは CLI コードを表示するタブを選択します。
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 つのストレージ アカウントを表示できます。 テンプレートの名前定義とストレージ アカウント名を比較します。
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 ..."
リソースをクリーンアップする
Azure リソースが不要になったら、リソース グループを削除して、デプロイしたリソースをクリーンアップします。
- Azure portal で、左側のメニューから [リソース グループ] を選択します。
- [名前でフィルター] フィールドに、リソース グループ名を入力します。
- リソース グループ名を選択します。 リソース グループ内の合計 3 つのリソースが表示されます。
- トップ メニューから [リソース グループの削除] を選択します。
次のステップ
このチュートリアルでは、複数のストレージ アカウント インスタンスを作成する方法について説明しました。 次のチュートリアルでは、複数のリソースと複数のリソース タイプを含むテンプレートを作成します。 一部のリソースには依存リソースがあります。