Delen via


Sjablonen voor beheerde VM-schijven gebruiken

In dit artikel worden de verschillen beschreven tussen beheerde en onbeheerde 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 niet-beheerde schijven

Laten we eerst eens kijken hoe onbeheerde schijven worden geïmplementeerd. Wanneer u niet-beheerde schijven maakt, hebt u een opslagaccount nodig om de VHD-bestanden op te slaan. U kunt een nieuw opslagaccount maken of een bestaand opslagaccount gebruiken. 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 virtuele-machineobject een afhankelijkheid toe van het opslagaccount om ervoor te zorgen dat het wordt gemaakt vóór de virtuele machine. Geef in de storageProfile sectie de volledige URI van de VHD-locatie op, die verwijst naar het opslagaccount en die nodig is voor de besturingssysteemschijf en eventuele gegevensschijven. In het volgende voorbeeld wordt één besturingssysteemschijf gemaakt van een installatiekopieën 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 beheerde Azure-schijven wordt de schijf een resource op het hoogste niveau en hoeft er geen opslagaccount meer te worden gemaakt door de gebruiker. Beheerde schijven zijn voor het eerst geïntroduceerd in de 2017-03-30 API-versie. In de volgende secties worden de standaardinstellingen beschreven en wordt uitgelegd hoe u uw schijven verder kunt aanpassen.

Standaardinstellingen voor beheerde schijven

Als u een virtuele machine met beheerde schijven wilt maken, hoeft u de opslagaccountresource niet meer te maken. In het onderstaande sjabloonvoorbeeld zijn er enkele verschillen met de vorige niet-beheerde schijfvoorbeelden:

  • De apiVersion is een versie voor een resourcetype 'virtualMachines' die ondersteuning biedt voor beheerde schijven.
  • osDisk en dataDisks niet meer verwijzen naar een specifieke URI voor de VHD.
  • Wanneer u implementeert 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 premium-opslag ondersteunt (grootten met 's' in de naam, zoals Standard_DS2_v2), worden premium-schijven standaard geconfigureerd. U kunt dit wijzigen met behulp van de SKU-instelling van de schijf om een opslagtype op te geven.
  • Als er geen naam voor de schijf is opgegeven, wordt de indeling van <VMName>_OsDisk_1_<randomstring> gebruikt voor de besturingssysteemschijf en <VMName>_disk<#>_<randomstring> voor elke gegevensschijf.
    • Als een VM wordt gemaakt op basis van een aangepaste installatiekopieën, worden de standaardinstellingen voor het type opslagaccount en de schijfnaam opgehaald uit de schijfeigenschappen die zijn gedefinieerd in de resource van de aangepaste installatiekopieën. Deze kunnen worden overschreven door waarden hiervoor op te geven in de sjabloon.
  • Standaard is de schijf in de cache opslaan lezen/schrijven voor de besturingssysteemschijf en Geen voor gegevensschijven.
  • In het volgende voorbeeld is er nog steeds een opslagaccountafhankelijkheid, maar dit is alleen voor de 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 object van de virtuele machine, 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 als de versie van de disks resource-API gebruikt2017-03-30. U kunt bijvoorbeeld als volgt een schijfresource maken om als gegevensschijf te gebruiken. In dit voorbeeld vmName wordt 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
    }
}

Verwijst in het VM-object naar het schijfobject dat moet worden gekoppeld. Als u de resource-id opgeeft van de beheerde schijf die in de managedDisk eigenschap is gemaakt, kan de schijf worden gekoppeld terwijl de VM 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 behulp van beheerde schijven

Als u beheerde beschikbaarheidssets wilt maken met VM's met behulp van beheerde schijven, voegt u het sku -object toe aan de resource van de beschikbaarheidsset en stelt u de name eigenschap 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 de apiVersion 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