Menggunakan templat disk terkelola VM

Artikel ini menjelaskan perbedaan antara disk terkelola dan tidak terkelola saat menggunakan templat Azure Resource Manager untuk menyediakan mesin virtual di Azure Stack Hub. Contoh tersebut membantu Anda mengonversi templat yang ada yang menggunakan disk tidak terkelola ke disk terkelola.

Pemformatan templat disk yang tidak terkelola

Untuk memulai, mari kita lihat cara disk yang tidak dikelola diterapkan. Saat membuat disk tidak terkelola, Anda memerlukan akun penyimpanan untuk menyimpan file VHD. Anda dapat membuat akun penyimpanan baru atau menggunakan akun yang sudah ada. Buat sumber daya akun penyimpanan baru di blok sumber daya templat, sebagai berikut:

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

Dalam objek komputer virtual, tambahkan dependensi pada akun penyimpanan untuk memastikan bahwa akun dibuat sebelum komputer virtual. Dalam bagian storageProfile tersebut, tentukan URI lengkap lokasi VHD, yang mereferensikan akun penyimpanan dan diperlukan untuk disk OS dan semua disk data. Contoh berikut membuat satu disk OS dari gambar, dan satu disk data kosong dengan ukuran 1023 GB:

{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2017-12-01",
    "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": {...}
    }
}

Pemformatan templat disk terkelola

Dengan disk terkelola Azure, disk menjadi sumber daya tingkat teratas dan tidak lagi memerlukan akun penyimpanan untuk dibuat oleh pengguna. Disk terkelola pertama kali diperkenalkan dalam versi API 2017-03-30. Bagian berikut menjelaskan pengaturan default dan menjelaskan cara menyesuaikan disk Anda lebih lanjut.

Setelan disk terkelola default

Untuk membuat VM dengan disk terkelola, Anda tidak perlu lagi membuat sumber daya akun penyimpanan. Dalam contoh templat di bawah ini, ada beberapa perbedaan dari contoh disk yang tidak terkelola sebelumnya:

  • apiVersion adalah versi untuk jenis sumber daya "virtualMachines" yang mendukung disk terkelola.
  • osDisk dan dataDisks tidak lagi merujuk ke URI tertentu untuk VHD.
  • Saat menyebarkan tanpa menentukan properti tambahan, disk menggunakan jenis penyimpanan berdasarkan ukuran VM. Misalnya, jika Anda menggunakan ukuran VM yang mendukung penyimpanan premium (ukuran dengan "s" dalam namanya seperti Standard_DS2_v2), maka disk premium akan dikonfigurasi secara default. Anda dapat mengubahnya dengan menggunakan pengaturan sku disk untuk menentukan jenis penyimpanan.
  • Jika tidak ada nama untuk disk yang ditentukan, disk mengambil format <VMName>_OsDisk_1_<randomstring> untuk disk OS dan <VMName>_disk<#>_<randomstring> untuk setiap disk data.
    • Jika VM sedang dibuat dari gambar kustom, pengaturan default untuk jenis akun penyimpanan dan nama disk diambil dari properti disk yang ditentukan dalam sumber daya gambar kustom. Sumber daya ini dapat ditimpa dengan menentukan nilai untuknya dalam templat.
  • Secara default, penembolokan disk adalah baca/tulis untuk disk OS dan Tidak Ada untuk disk data.
  • Dalam contoh berikut, masih ada dependensi akun penyimpanan, meskipun ini hanya untuk penyimpanan diagnostik dan tidak diperlukan untuk penyimpanan disk:
{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2017-12-01",
    "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": {...}
    }
}

Menggunakan sumber daya disk terkelola tingkat atas

Sebagai alternatif untuk menentukan konfigurasi disk di objek komputer virtual, Anda dapat membuat sumber daya disk tingkat atas dan melampirkannya sebagai bagian dari pembuatan komputer virtual. Pastikan untuk menggunakan 2017-03-30 sebagai disks versi API sumber daya. Misalnya, Anda dapat membuat sumber daya disk sebagai berikut untuk digunakan sebagai disk data. Dalam contoh ini, vmName digunakan sebagai bagian dari nama disk:

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

Di dalam objek VM, referensikan objek disk yang akan dilampirkan. Menentukan ID sumber daya dari disk terkelola yang dibuat di properti managedDisk memungkinkan lampiran disk saat VM dibuat. apiVersion untuk sumber daya VM diatur ke 2017-12-01. Dependensi pada sumber daya disk ditambahkan untuk memastikan sumber daya berhasil dibuat sebelum pembuatan VM:

{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2017-12-01",
    "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": {...}
    }
}

Membuat set ketersediaan terkelola dengan VM menggunakan disk terkelola

Untuk membuat set ketersediaan terkelola dengan VM menggunakan disk terkelola, tambahkan objek sku ke sumber daya set ketersediaan dan atur properti name ke Aligned. Properti ini memastikan bahwa disk untuk setiap VM cukup terisolasi satu sama lain untuk menghindari satu titik kegagalan. Perhatikan juga bahwa apiVersion untuk sumber daya set ketersediaan diatur ke 2017-12-01:

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

Langkah berikutnya