Sjablonen voor beheerde schijven voor VM's gebruiken

In dit artikel worden de verschillen beschreven tussen beheerde en niet-beheerde schijven bij het gebruik van Azure Resource Manager-sjablonen voor het inrichten van virtuele machines in Azure Stack Hub. De voorbeelden helpen u bij het converteren van bestaande sjablonen die gebruikmaken van niet-beheerde schijven naar beheerde schijven.

Sjabloonopmaak voor onmanagede schijven

Laten we eerst eens kijken hoe onmanagede schijven worden geïmplementeerd. Wanneer u niet-beherende schijven maakt, hebt u een opslagaccount nodig voor het opslaan van de VHD-bestanden. U kunt een nieuw opslagaccount maken of een account gebruiken dat al bestaat. Maak als volgt een nieuwe opslagaccountresource in het resourceblok van de sjabloon:

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

Voeg binnen het object van de virtuele machine een afhankelijkheid toe van het opslagaccount om ervoor te zorgen dat het vóór de virtuele machine wordt gemaakt. Geef in storageProfile de sectie de volledige URI van de VHD-locatie op, die verwijst naar het opslagaccount en nodig is voor de besturingssysteemschijf en eventuele gegevensschijven. In het volgende voorbeeld wordt één besturingssysteemschijf gemaakt van een afbeelding en één lege gegevensschijf met een grootte van 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": {...}
    }
}

Sjabloonopmaak voor beheerde schijven

Met azure managed disks wordt de schijf een resource op het hoogste niveau en hoeft de gebruiker geen opslagaccount meer te maken. Beheerde schijven zijn voor het eerst geïntroduceerd in de 2017-03-30 API-versie. In de volgende secties worden de standaardinstellingen uitgelegd en wordt uitgelegd hoe u uw schijven verder kunt aanpassen.

Standaardinstellingen voor beheerde schijven

Als u een VM met beheerde schijven wilt maken, hoeft u de opslagaccountresource niet meer te maken. In het onderstaande sjabloonvoorbeeld zijn er enkele verschillen met de vorige voorbeelden van onmanagede schijven:

  • De apiVersion is een versie voor een resourcetype 'virtualMachines', dat beheerde schijven ondersteunt.
  • osDisk en dataDisks verwijzen niet langer naar een specifieke URI voor de VHD.
  • Bij het implementeren zonder aanvullende eigenschappen op te geven, gebruikt de schijf een opslagtype op basis van de grootte van de VM. Als u bijvoorbeeld een VM-grootte gebruikt die ondersteuning biedt voor Premium-opslag (grootten met 's' in hun naam, zoals Standard_DS2_v2), worden Premium-schijven standaard geconfigureerd. U kunt dit wijzigen door de SKU-instelling van de schijf te gebruiken om een opslagtype op te geven.
  • Als er geen naam voor de schijf is opgegeven, <VMName>_OsDisk_1_<randomstring> wordt de indeling van gebruikt voor de besturingssysteemschijf en <VMName>_disk<#>_<randomstring> voor elke gegevensschijf.
    • Als een VM wordt gemaakt op basis van een aangepaste afbeelding, worden de standaardinstellingen voor het type opslagaccount en de schijfnaam opgehaald uit de schijfeigenschappen die zijn gedefinieerd in de aangepaste afbeeldingsresource. Deze kunnen worden overschrijven door waarden voor deze waarden op te geven in de sjabloon.
  • Standaard is schijf caching lezen/schrijven voor de besturingssysteemschijf en Geen voor gegevensschijven.
  • In het volgende voorbeeld is er nog steeds een afhankelijkheid van een opslagaccount, maar dit is alleen voor opslag van diagnostische gegevens en is niet nodig voor schijfopslag:
{
    "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": {...}
    }
}

Een beheerde schijfresource op het hoogste niveau gebruiken

Als alternatief voor het opgeven van de schijfconfiguratie in het virtuele-machineobject, kunt u een schijfresource op het hoogste niveau maken en deze koppelen als onderdeel van het maken van de virtuele machine. Zorg ervoor dat u gebruikt als 2017-03-30 de resource-API-versie disks . U kunt bijvoorbeeld als volgt een schijfresource maken om te gebruiken als een gegevensschijf. In dit voorbeeld wordt vmName gebruikt als onderdeel van de schijfnaam:

{
    "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
    }
}

In het VM-object verwijst u naar het schijfobject dat moet worden gekoppeld. Als u de resource-id opgeeft van de beheerde schijf die in managedDisk de eigenschap is gemaakt, kan de bijlage van de schijf worden gebruikt wanneer de virtuele harde schijf wordt gemaakt. De apiVersion voor de VM-resource is ingesteld op 2017-12-01. Er wordt een afhankelijkheid van de schijfresource toegevoegd om ervoor te zorgen dat deze is gemaakt voordat de VM wordt gemaakt:

{
    "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": {...}
    }
}

Beheerde beschikbaarheidssets maken met VM's met beheerde schijven

Als u beheerde beschikbaarheidssets wilt maken met VM's met behulp van beheerde schijven, sku voegt u het object toe aan de resource van de beschikbaarheidsset en stelt u de eigenschap name in op Aligned. Deze eigenschap zorgt ervoor dat de schijven voor elke VM voldoende van elkaar zijn geïsoleerd om single points of failure te voorkomen. Houd er ook rekening mee dat apiVersion de voor de resource van de beschikbaarheidsset is ingesteld op 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"
    }
}

Volgende stappen