Używanie dysków w szablonach usługi Azure Resource Manager

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux Maszyny ✔️ wirtualne z systemem Windows — elastyczne zestawy ✔️ ✔️ skalowania jednolite zestawy skalowania

W tym dokumencie przedstawiono różnice między dyskami zarządzanymi i niezarządzanych podczas używania szablonów usługi Azure Resource Manager do aprowizowania maszyn wirtualnych. Przykłady ułatwiają aktualizowanie istniejących szablonów używających dysków niezarządzanych do dysków zarządzanych. Do celów referencyjnych używamy szablonu vm-simple-windows jako przewodnika. Szablon można zobaczyć przy użyciu dysków zarządzanych i wcześniejszej wersji przy użyciu dysków niezarządzanych , jeśli chcesz je porównać bezpośrednio.

Formatowanie szablonu Dyski niezarządzane

Na początek przyjrzyjmy się, jak są wdrażane dyski niezarządzane. Podczas tworzenia dysków niezarządzanych potrzebne jest konto magazynu do przechowywania plików VHD. Możesz utworzyć nowe konto magazynu lub użyć konta, które już istnieje. W tym artykule pokazano, jak utworzyć nowe konto magazynu. Utwórz zasób konta magazynu w bloku zasobów, jak pokazano poniżej.

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

W obiekcie maszyny wirtualnej dodaj zależność od konta magazynu, aby upewnić się, że została utworzona przed maszyną wirtualną. storageProfile W sekcji określ pełny identyfikator URI lokalizacji dysku VHD, która odwołuje się do konta magazynu i jest wymagana dla dysku systemu operacyjnego i wszystkich dysków danych.

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

Formatowanie szablonów dysków zarządzanych

W przypadku usługi Azure Dyski zarządzane dysk staje się zasobem najwyższego poziomu i nie wymaga już utworzenia konta magazynu przez użytkownika. Dyski zarządzane zostały po raz pierwszy uwidocznione w wersji interfejsu 2016-04-30-preview API, są dostępne we wszystkich kolejnych wersjach interfejsu API i są teraz domyślnym typem dysku. W poniższych sekcjach opisano ustawienia domyślne i szczegółowe informacje na temat dalszego dostosowywania dysków.

Uwaga

Zaleca się użycie wersji interfejsu API nowszej niż 2016-04-30-preview w przypadku wystąpienia zmian powodujących niezgodność między 2016-04-30-preview i 2017-03-30.

Domyślne ustawienia dysku zarządzanego

Aby utworzyć maszynę wirtualną z dyskami zarządzanymi, nie musisz już tworzyć zasobu konta magazynu. Zapoznaj się z poniższym przykładem szablonu, istnieją pewne różnice między poprzednimi przykładami dysków niezarządzanych, które należy zwrócić uwagę:

  • Jest apiVersion to wersja, która obsługuje dyski zarządzane.
  • osDisk i dataDisks nie odwołuje się już do określonego identyfikatora URI dysku VHD.
  • Podczas wdrażania bez określania dodatkowych właściwości dysk będzie używać typu magazynu na podstawie rozmiaru maszyny wirtualnej. Jeśli na przykład używasz rozmiaru maszyny wirtualnej, który obsługuje magazyn w warstwie Premium (rozmiary z "s" w ich nazwie, np. Standard_D2s_v3), dyski w warstwie Premium zostaną domyślnie skonfigurowane. Można to zmienić przy użyciu ustawienia jednostki SKU dysku, aby określić typ magazynu.
  • Jeśli nie określono nazwy dysku, przyjmuje format <VMName>_OsDisk_1_<randomstring> dysku systemu operacyjnego i <VMName>_disk<#>_<randomstring> dla każdego dysku danych.
    • Jeśli maszyna wirtualna jest tworzona na podstawie obrazu niestandardowego, ustawienia domyślne dla typu konta magazynu i nazwy dysku są pobierane z właściwości dysku zdefiniowanych w zasobie obrazu niestandardowego. Można je zastąpić, określając wartości dla nich w szablonie.
  • Domyślnie szyfrowanie dysków platformy Azure jest wyłączone.
  • Domyślnie buforowanie dysku to odczyt/zapis dla dysku systemu operacyjnego i Brak dla dysków danych.
  • W poniższym przykładzie nadal istnieje zależność konta magazynu, chociaż jest to tylko magazyn diagnostyki i nie jest wymagany w przypadku magazynu dyskowego.
{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2018-10-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": {...}
    }
}

Korzystanie z zasobu dysku zarządzanego najwyższego poziomu

Alternatywą dla określenia konfiguracji dysku w obiekcie maszyny wirtualnej jest utworzenie zasobu dysku najwyższego poziomu i dołączenie go w ramach tworzenia maszyny wirtualnej. Na przykład można utworzyć zasób dysku w następujący sposób, aby użyć go jako dysku danych.

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

W obiekcie maszyny wirtualnej odwołaj się do obiektu dysku, który ma zostać dołączony. Określenie identyfikatora zasobu dysku zarządzanego utworzonego we managedDisk właściwości umożliwia dołączanie dysku podczas tworzenia maszyny wirtualnej. Dla apiVersion zasobu maszyny wirtualnej jest ustawiona wartość 2017-03-30. Dodawana jest zależność od zasobu dysku, aby upewnić się, że została pomyślnie utworzona przed utworzeniem maszyny wirtualnej.

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

Tworzenie zarządzanych zestawów dostępności z maszynami wirtualnymi przy użyciu dysków zarządzanych

Aby utworzyć zarządzane zestawy dostępności z maszynami wirtualnymi przy użyciu dysków zarządzanych, dodaj sku obiekt do zasobu zestawu dostępności i ustaw name właściwość na Aligned. Ta właściwość zapewnia, że dyski dla każdej maszyny wirtualnej są wystarczająco odizolowane od siebie, aby uniknąć pojedynczych punktów awarii. Należy również pamiętać, że dla apiVersion zasobu zestawu dostępności ustawiono wartość 2018-10-01.

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

Dyski SSD w warstwie Standardowa

Poniżej przedstawiono parametry wymagane w szablonie Resource Manager do utworzenia dysków SSD w warstwie Standardowa:

  • Właściwość apiVersion dla microsoft.Compute musi być ustawiona na 2018-04-01 wartość (lub nowszą)
  • Określ wartość managedDisk.storageAccountType jako StandardSSD_LRS

W poniższym przykładzie przedstawiono sekcję properties.storageProfile.osDisk dla maszyny wirtualnej korzystającej z dysków SSD w warstwie Standardowa:

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

Kompletny przykładowy szablon tworzenia dysku SSD w warstwie Standardowa przy użyciu szablonu można znaleźć w temacie Create a VM from a Windows Image with Standard SSD Data Disks (Tworzenie maszyny wirtualnej na podstawie obrazu systemu Windows przy użyciu dysków SSD w warstwie Standardowa).

Dodatkowe scenariusze i dostosowania

Aby uzyskać pełne informacje na temat specyfikacji interfejsu API REST, zapoznaj się z dokumentacją interfejsu API REST tworzenia dysku zarządzanego. Dodatkowe scenariusze, a także wartości domyślne i dopuszczalne, które można przesłać do interfejsu API za pomocą wdrożeń szablonów.

Następne kroki