Azure Resource Manager テンプレートでの管理ディスクの使用Using Managed Disks in Azure Resource Manager Templates

このドキュメントでは、Azure Resource Manager テンプレートを使って仮想マシンをプロビジョニングする際の管理ディスクと非管理対象ディスクの違いについて説明します。This document walks through the differences between managed and unmanaged disks when using Azure Resource Manager templates to provision virtual machines. 以下の例は、非管理対象ディスクが使用されている既存のテンプレートを管理ディスクに更新する際にお役立てください。The examples help you to update existing templates that are using unmanaged Disks to managed disks. ここでは参考として 101-vm-simple-windows テンプレートを使用しています。For reference, we are using the 101-vm-simple-windows template as a guide. 管理ディスクを使用したテンプレートと非管理対象ディスクを使用した以前のバージョンを見て直接比較することもできます。You can see the template using both managed Disks and a prior version using unmanaged disks if you'd like to directly compare them.

非管理対象ディスクのテンプレートの書式Unmanaged Disks template formatting

最初に、非管理対象ディスクのデプロイ方法について見てみましょう。To begin, let's take a look at how unmanaged disks are deployed. 非管理対象ディスクを作成するときは、VHD ファイルを保持するストレージ アカウントが必要です。When creating unmanaged disks, you need a storage account to hold the VHD files. ストレージ アカウントは新たに作成しても、既にあるものを使用してもかまいません。You can create a new storage account or use one that already exists. この記事では、新しいストレージ アカウントの作成方法を紹介します。This article shows you how to create a new storage account. 次に示すように、resources ブロックでストレージ アカウント リソースを作成します。Create a storage account resource in the resources block as shown below.

{
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageAccountName')]",
    "apiVersion": "2016-01-01",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
}

仮想マシン オブジェクト内で、ストレージ アカウントへの依存関係を追加します。ストレージ アカウントが仮想マシンより前に作成されるようにするためです。Within the virtual machine object, add a dependency on the storage account to ensure that it's created before the virtual machine. storageProfile セクション内に、VHD がある場所の完全 URI を指定します。この URI はストレージ アカウントを参照するもので、OS ディスク用とデータ ディスク用に必要となります。Within the storageProfile section, specify the full URI of the VHD location, which references the storage account and is needed for the OS disk and any data disks.

{
    "apiVersion": "2015-06-15",
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[variables('vmName')]",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
    ],
    "properties": {
        "hardwareProfile": {...},
        "osProfile": {...},
        "storageProfile": {
            "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "[parameters('windowsOSVersion')]",
                "version": "latest"
            },
            "osDisk": {
                "name": "osdisk",
                "vhd": {
                    "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob, 'vhds/osdisk.vhd')]"
                },
                "caching": "ReadWrite",
                "createOption": "FromImage"
            },
            "dataDisks": [
                {
                    "name": "datadisk1",
                    "diskSizeGB": 1023,
                    "lun": 0,
                    "vhd": {
                        "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob, 'vhds/datadisk1.vhd')]"
                    },
                    "createOption": "Empty"
                }
            ]
        },
        "networkProfile": {...},
        "diagnosticsProfile": {...}
    }
}

管理ディスクのテンプレートの書式Managed disks template formatting

Azure Managed Disks を使用した場合、そのディスクが最上位のリソースとなり、ユーザーによって作成されるストレージ アカウントは不要となります。With Azure Managed Disks, the disk becomes a top-level resource and no longer requires a storage account to be created by the user. 管理ディスクは、最初 2016-04-30-preview の API バージョンで公開され、その後のすべての API バージョンで使用でき、既定のディスク タイプになりました。Managed disks were first exposed in the 2016-04-30-preview API version, they are available in all subsequent API versions and are now the default disk type. 以降のセクションでは、既定の設定とディスクのカスタマイズ方法について詳しく見ていきます。The following sections walk through the default settings and detail how to further customize your disks.

注意

2016-04-30-preview2017-03-30 の間で大きな変更があったため、2016-04-30-preview 以降の API バージョンを使うことをお勧めします。It is recommended to use an API version later than 2016-04-30-preview as there were breaking changes between 2016-04-30-preview and 2017-03-30.

管理ディスクの既定の設定Default managed disk settings

今後、管理ディスクを使用して VM を作成する場合、ストレージ アカウント リソースを作成する必要はありません。既存の仮想マシン リソースは次のように更新することができます。To create a VM with managed disks, you no longer need to create the storage account resource and can update your virtual machine resource as follows. 具体的には、apiVersion2017-03-30 が反映され、osDiskdataDisks には、VHD の具体的な URI が指定されていません。Specifically note that the apiVersion reflects 2017-03-30 and the osDisk and dataDisks no longer refer to a specific URI for the VHD. デプロイ時に別途プロパティを指定しない限り、ディスクには Standard LRS ストレージが使用されます。When deploying without specifying additional properties, the disk will use Standard LRS storage. 名前を指定しなかった場合、OS ディスクには <VMName>_OsDisk_1_<randomstring> 形式の名前が、各データ ディスクには <VMName>_disk<#>_<randomstring> 形式の名前が付きます。If no name is specified, it takes the format of <VMName>_OsDisk_1_<randomstring> for the OS disk and <VMName>_disk<#>_<randomstring> for each data disk. 既定では、Azure Disk Encryption が無効になり、キャッシュは、OS ディスクの場合は "読み取り/書き込み" に、データ ディスクの場合は "なし" になります。By default, Azure disk encryption is disabled; caching is Read/Write for the OS disk and None for data disks. 下の例を見るとわかるように、ストレージ アカウントの依存関係は依然として存在します。ただし、これはあくまで診断のストレージ用であって、ディスク ストレージに必要なものではありません。You may notice in the example below there is still a storage account dependency, though this is only for storage of diagnostics and is not needed for disk storage.

{
    "apiVersion": "2017-03-30",
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[variables('vmName')]",
    "location": "[resourceGroup().location]",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
        "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
    ],
    "properties": {
        "hardwareProfile": {...},
        "osProfile": {...},
        "storageProfile": {
            "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "[parameters('windowsOSVersion')]",
                "version": "latest"
            },
            "osDisk": {
                "createOption": "FromImage"
            },
            "dataDisks": [
                {
                    "diskSizeGB": 1023,
                    "lun": 0,
                    "createOption": "Empty"
                }
            ]
        },
        "networkProfile": {...},
        "diagnosticsProfile": {...}
    }
}

最上位の管理ディスク リソースの使用Using a top-level managed disk resource

仮想マシン オブジェクトにディスク構成を指定する代わりに、最上位のディスク リソースを作成して、それを仮想マシン作成の過程でアタッチすることもできます。As an alternative to specifying the disk configuration in the virtual machine object, you can create a top-level disk resource and attach it as part of the virtual machine creation. たとえば、データ ディスクとして使用するディスク リソースは次のように作成できます。For example, you can create a disk resource as follows to use as a data disk.

{
    "type": "Microsoft.Compute/disks",
    "name": "[concat(variables('vmName'),'-datadisk1')]",
    "apiVersion": "2017-03-30",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "Standard_LRS"
    },
    "properties": {
        "creationData": {
            "createOption": "Empty"
        },
        "diskSizeGB": 1023
    }
}

VM オブジェクト内で、アタッチするディスク オブジェクトを参照します。Within the VM object, reference the disk object to be attached. 作成した管理ディスクのリソース ID を managedDisk プロパティに指定しておけば、VM が作成されるときにディスクがアタッチされます。Specifying the resource ID of the managed disk created in the managedDisk property allows the attachment of the disk as the VM is created. VM リソースの apiVersion2017-03-30 に設定されています。The apiVersion for the VM resource is set to 2017-03-30. VM の作成前にディスク リソースが作成されるように、ディスク リソースへの依存関係が追加されます。A dependency on the disk resource is added to ensure it's successfully created before VM creation.

{
    "apiVersion": "2017-03-30",
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[variables('vmName')]",
    "location": "[resourceGroup().location]",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
        "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]",
        "[resourceId('Microsoft.Compute/disks/', concat(variables('vmName'),'-datadisk1'))]"
    ],
    "properties": {
        "hardwareProfile": {...},
        "osProfile": {...},
        "storageProfile": {
            "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "[parameters('windowsOSVersion')]",
                "version": "latest"
            },
            "osDisk": {
                "createOption": "FromImage"
            },
            "dataDisks": [
                {
                    "lun": 0,
                    "name": "[concat(variables('vmName'),'-datadisk1')]",
                    "createOption": "attach",
                    "managedDisk": {
                        "id": "[resourceId('Microsoft.Compute/disks/', concat(variables('vmName'),'-datadisk1'))]"
                    }
                }
            ]
        },
        "networkProfile": {...},
        "diagnosticsProfile": {...}
    }
}

管理ディスクを使った VM で構成される管理された可用性セットを作成するCreate managed availability sets with VMs using managed disks

管理ディスクを使った VM で構成される管理された可用性セットを作成するには、可用性セット リソースに sku オブジェクトを追加し、その name プロパティを Aligned に設定します。To create managed availability sets with VMs using managed disks, add the sku object to the availability set resource and set the name property to Aligned. このプロパティにより、各 VM のディスクが単一障害点とならないよう互いに分離されます。This property ensures that the disks for each VM are sufficiently isolated from each other to avoid single points of failure. また、可用性セット リソース の apiVersion2017-03-30 に設定されています。Also note that the apiVersion for the availability set resource is set to 2017-03-30.

{
    "apiVersion": "2017-03-30",
    "type": "Microsoft.Compute/availabilitySets",
    "location": "[resourceGroup().location]",
    "name": "[variables('avSetName')]",
    "properties": {
        "PlatformUpdateDomainCount": 3,
        "PlatformFaultDomainCount": 2
    },
    "sku": {
        "name": "Aligned"
    }
}

Standard SSD ディスクStandard SSD disks

Resource Manager テンプレートで Standard SSD ディスクを作成するには、次のパラメーターが必要です。Below are the parameters needed in the Resource Manager template to create Standard SSD Disks:

  • Microsoft.Compute の apiVersion2018-04-01 (またはそれ以降) として設定する必要があります。apiVersion for Microsoft.Compute must be set as 2018-04-01 (or later)
  • StandardSSD_LRS として managedDisk.storageAccountType を指定します。Specify managedDisk.storageAccountType as StandardSSD_LRS

次の例は、Standard SSD ディスクを使用する VM の properties.storageProfile.osDisk セクションを示したものです。The following example shows the properties.storageProfile.osDisk section for a VM that uses Standard SSD Disks:

"osDisk": {
    "osType": "Windows",
    "name": "myOsDisk",
    "caching": "ReadWrite",
    "createOption": "FromImage",
    "managedDisk": {
        "storageAccountType": "StandardSSD_LRS"
    }
}

テンプレートを使用して Standard SSD ディスクを作成する方法における完全なテンプレート例については、Standard SSD データ ディスクを含む Windows イメージから VM を作成に関するページを参照してください。For a complete template example of how to create a Standard SSD disk with a template, see Create a VM from a Windows Image with Standard SSD Data Disks.

その他のシナリオとカスタマイズAdditional scenarios and customizations

REST API の仕様の詳細については、管理ディスク作成の REST API に関するドキュメントを参照してください。To find full information on the REST API specifications, please review the create a managed disk REST API documentation. その他のシナリオや、テンプレートのデプロイ時に API に送信できる既定値や許容値についても説明されています。You will find additional scenarios, as well as default and acceptable values that can be submitted to the API through template deployments.

次の手順Next steps